Wow, it was never designed for 2x2 textures where the exact pixels matter! The GL shader will use texture coordinate interpolation when drawing these things, I can't vouch for it doing a 1:1 perfect mapping. You could just use a bigger version of the texture?
Yes - it's resizing it by one pixel, and interpolating. I'm not massively surprised, but also wouldn't consider this a huge priority because none of this stuff was designed for images that can't survive being transformed.
For example, even if I spent hours tweaking the algorithm to make sure that it's precisely correct in this case, if you ran this on an OS where the desktop scale was slightly different from 1:1 (as often happens in Windows, for example), then you'd get even more horrible rescaling artifacts.
Are you trying to draw grid-lines? If so, personally, I'd just draw them with a RectangleList. Images are there for drawing things that are pictures. For drawing things that are geometric, just draw them as shapes, and avoid using images.
I am using lots of tiled image patterns in my application and most of them are more complex, but these even work fine with OpenGL as they have thicker contours. Just for simplicity i have painted my grid patterns the same way. But you are right... its the easiest and a much more reliable solution to draw the lines with a RectangleList. :)