I have a question regarding how you render "gray" pixels. You said that you use rectangles, because "dithered" pattern had low performance. But the rectangles cause "scanlines", which I presume are because of imprecise mapping to physical pixels.
Have you tried other shapes? Dividing the square by the diagonal should not have this problem, and you're even drawing a simpler shape (triangle vs rectangle).