This is a really common problem that I stumbled across with my own packs a while back. The fix is actually pretty easy, but understanding it is going to take a moment so buckle up.
OK... .png image files have four channels to them. There's the standard Red, Green, and Blue channels that determine the color of a pixel, and then there's the Alpha channel that determines transparency. With me so far?
When we look at a completely transparent part of an image, our minds generally assume that there's nothing there at all. That those pixels just don't exist. This is completely wrong! There is still a Red, Green, and Blue number for every single pixel in the image file even if we can't see any of them. Usually the image editor will either just leave whatever colors have been erased from an area, or bucket-fill completely transparent parts of the image with either black or white in order to improve the optimization of the image a little bit.
Note which color I underlined. White. That one word brings us back to your problem. See... mipmapping works by down-sampling (resizing to a smaller resolution) all of the textures. However Minecraft isn't very good at doing this, so it down-samples the colors and transparency separately and by averaging areas. What this means is that the edge of your grass is getting some of that hidden white color on it because it's being blended by Minecraft with the color you cannot normally see due to transparency. The only reason it doesn't appear white is because of the green biome overlay which adds color to it yet again. If you disable this map, you'll see it for what it is: white.
So how do you fix it? Well... by exploiting another fun quirk of Minecraft of course! See, MC doesn't do transparency particularly well. In fact, as an efficiency measure it cuts any amount of transparency below 50% and just rounds it to 0%. So if, just as an example, you filled the transparent parts of your grass texture with 1% of the medium gray you use for the texture... Minecraft would just ignore it entirely during rendering. But the image would still save that color in the RGB channels which means that when MC goes to make mipmaps it'll average the gray of your grass with the gray of the 'transparent' area and make something far closer to the original than the white it has now.