iOS devices round texture coordinates to the nearest pixel - why?

This one took me a while to track down, but at this point I’m fairly certain it’s not my code, and is either a deep MonoGame issue or the way OGL ES works.

First I created a simple example on PC. I have a quad that I’m rendering in 3D (using VertexPositionColorTexture[]'s). I have set the verts on the left to have a texture coordinate that is half of a pixel offset from the edge of the pixel. In other words, if my texture is 128 pixels wide, then pseudocode would look like:

vert.TextureCoordinate.X = (64.5f / (float)128);

The end result is that the left-most texel is chopped in half (which is what I want):

To help visualize this, I’ve drawn white lines to show the edges of the texels. Notice that the left-most gray texels take up half of the horizontal space of a full texel:

Next, I’ve run this on the iOS simulator on Mac, and it behaves properly:

Finally, I ran this on device, and as you can see, the left-most texel appears in full rather than being cut in half:

Furthermore, I’ve added texture coord animation (gradually increasing the left-most texture coordinate) and on device, the texture coordinates “pop” to the nearest edge, rather than gradually sliding.

Is this an OGL ES restriction? Any info as to why this is happening would be appreciated.