Stop texture from bleeding to other side

Hello, I’ve got these block textures:

image
grass_side
grass_top
dirt

They are nice but they have a problem: I believe that because the texture is repeating, the color on one side “bleeds” into the other side because of Roblox anti-aliasing, causing some ugly lines. I know you can’t turn anti-aliasing off (or maybe you can? If you can or if there is some hack to turn it off, I would really like to know!), so how do I stop these ugly lines from appearing while retaining the tileability of the textures?

Here are some examples of what I mean:

Here, the bottom of the texture (dirt) is bleeding into the grass top:
image

Here, the top of the texture (grass) is bleeding into the bottom dirt texture:
image

I need these textures to be tiled because I plan to implement greedy meshing at some point.

I know I could add a sort of “buffer” to the top and bottom of the texture and offset it accordingly, but then I can only implement greedy meshing in one or two dimensions instead of all three for this block (and similar blocks, where one side is a different color than the other).

I also know I could use SurfaceGuis and ImageLabels with the resampling property set to “Pixelated”, but I would also like to avoid that if I can, as I can’t imagine that would be good for performance.

Thanks!