Remove all strokes. Set stroke color = none. Zero width or fully transparent color is different thing than no color. Select all those green parts and apply Path > Union. That's because only one path can be subtracted at a time.
The target (=red) must also be a single path, but it seems already like it's a single path. It must NOT have a stroke because the stroke fills partially the holes. I guess there's a wide red stroke.
Path > Combine also works instead of Union if there's no overlapping green parts. Subtract then the united green part from the background shape.
Strokes can be converted to filled strokeless paths by applying Path > Stroke to Path. Before it they do not take part in Union, Difference nor other Boolean operations.