Grass using layer mask for landscape componenets

I am tryng to get texture and landscape grass to be placed on the terrain using a layer mask. I am using an image that has red (roads), green (forest), blue (default) and have hooked those through a series of lerp nodes to get the texture, and that works fine.

I also have each rgb value hooked up to a grass output node with grass types for each.
The masking works fine for all the textures they are exactly how they should be (very basic atm for testing), but the grass seems to have a buffer or something where it overlaps the other parts, and this is not very good as it has trees in the road.

I am trying to find the best way to do this using layer masks, and i have to use a material for each component as the terrain is a large area. I also have a material on the landscape itself that only has a grass output node and all the grass types along with a constant 1 going into it. It seemed to be the only way to get the grass type to work on the component materials.

It is using real world data to layer satellite imagery on. Then a lerp with camera distance changes material to the geotypical textures (grass, rock etc).

Im only new to unreal so any help would be greatly appreciated.