@Yann_S, I agree with @syntheticmagus that creating a texture where you want to be able to snap the bottom of the grass, yet start that at 0.5 V will always give you problems, especially when mip mapping. The only real way to combat that is to not snap the secondary texture to 0.5 V and use a custom offset to ensure that you aren’t pulling pixels from the texture above.
The way I would solve this problem is a little different. Rather than setting up the texture like above and needing to rotate the UVs to get to the other texture, I created a new tiling texture from your source (the grey background is just for illustration of proportions here, it is a transparent png).
This is a 2048x256 pixel map that tiles in U. The reason to use a non-square texture is so that you can limit the overdraw on the grass and save on file size. Your original 1024x1024 texture was 518K. This reformatted verision is 512K so you don’t pay a higher file size cost while retaining the same texel density. I am not sure how you are using this for final, but noticed that your original texture did not tile so I assume it is used so that the edges aren’t seen. In this case, you can get a unique look just by offsetting the U position.
I am tiling in U and clamping in V with a non-uniform scale for U and V to retain the same proportions as in the original art. I updated your playground with this new asset and added a GUI slider so you can see the effect of offsetting the U position on the texture. This should give you flexibility while not causing any stray pixels to appear.
Let me know if you have any questions about this. Hope it helps!