I think the software renderers may be rendering correctly to the official OpenGL spec in this case. LDView contains the following code that gets called after setting up an Orthographic pixel-scaled view:
The reasoning behind the above is related to the fact that each pixel is actually a box, with min, max, and center, and OpenGL renders either to the bottom left corner or to the center (can't remember which), when you're expecting the opposite. I chose 0.375 based on empirical testing on various video cards.
Code:
if (strncmp(glVendor, "ATI Technologies Inc.", 3) != 0)
{
// This doesn't work right on ATI video cards, so skip.
glTranslatef(0.375f, 0.375f, 0.0f);
}
The reasoning behind the above is related to the fact that each pixel is actually a box, with min, max, and center, and OpenGL renders either to the bottom left corner or to the center (can't remember which), when you're expecting the opposite. I chose 0.375 based on empirical testing on various video cards.