This problem can also happen for regular spritefonts that have there xml point size set very low then are scaled up. This occurred in xna as well especially when scaling up. The typical fix is MipMaping and picking sizes and simply not scaling as much as can be avoided.
Here it’s a double edged sword because its a question of does texture.Width * (1 / texture.Width); mean = to the texture width or = to texture.Width -1;? So then you go (1f+float.Min) / texture.Width; problem solved right nopp. Ergo There is a question of floating point precision in the context of error size. How big when scaling up will your rounding error be? More then float.Min so how much correction do you do? If i say draw at 9,9 with a width height of 1,1 do i mean 8,8,0,0? obviously not but then we want width -1 right?.
What you see here though im pretty sure is alpha blending on anti aliased edges between the background and drawn textures. Im guessing your clearing with cornflower blue or black. Set your clear color to green or white and run it and those borders should turn to grey.
You can try the following first turn off Multisample Antialiasing from the graphics device manager early on just before you apply changes. Hopefully that is enough.
If that’s not enough turn on point clamp as well. (doubt this will solve it either, but it might with the above). point shouldn’t sample the interpolation even when scaling this doesn’t mean that antialising wont kick in and alpha blend or sample the edges off the letter though.
That could be and probably is caused by a floating point error in scaling up.
No where in monogames code does the texel width add a float min to calculated position or a error correction value at least no where i saw. sometimes doing that will make you miss a pixel anyways then some letters get trimmed a pixel and it looks weird scaled to far down. So its a case of damned if you do damned if you don’t, but with text you might as well just clamp it anyways.
If that’s not enough and im guessing this is what your going to have to do…
fun fun … time to Edit your font texture.
Make sure that the edges are actually the right color and add a edit: another extra pixel of transparency around each letters bounding square. Yes floating point errors and scaling combined can push a error more then one pixel out i.e 2.
So the real solution as with all user defined sprites when per pixel scaling with a mask is involved, i.e. the pink mask in your font, is MipMaping and picking or some rigged version of this idea and in this case downscaling only.
With non premultiplied everything but the letters themselves can be transparent black and problem solved at least unless multisampling is on with oops antialiased drawn pixels when painting the sprites in your pain’t program ackkk!!!.
I really dislike pre-multiplied alpha i dunno why everyone thinks its so great.