Without seeing a screenshot, I could guess that it's because of the positioning of the points.
Points are the 'centre' of the point. The co-ordinate of (0, 0) for example) in a default view) is the very corner of the window, not the top-left pixel. To draw that pixel, you need to fill from (0, 0) to (1, 1). Drawing a point fills the entire pixel that it is in inside. If the co-ordinate is (1, 1) though, it may choose any of the four pixels that share that corner.
The solution then, when drawing points, is to add (0.5, 0.5) to each (rounded) pixel co-ordinate. This places the point in the centre of the pixel.