I am having trouble achieving the desired effect of darkening the fill of objects based on a specified gradient. Instead, when the mask is applied over the fill, it actually lightens it. I suspect that this issue arises from the color blending method being additive rather than subtractive. Is there a need for an additional filter to be applied on top of the mask? It seems like there should be a way, either in the gradient or mask definitions, to control how the colors blend. You can find the code and fiddle link below:
<svg width="400px" height="500px">
<defs>
<linearGradient id="mygradient" gradientUnits="userSpaceOnUse"
x1="0" y1="0" x2="0" y2="100%">
<stop offset="0" stop-color="black"/>
<stop offset="0.5" stop-color="white"/>
<stop offset="1" stop-color="black"/>
</linearGradient>
<mask id="mask1" x="0" y="0" width="400" height="500" MaskUnits="userSpaceOnUse" color-interpolation="sRGB">
<rect x="0" y="0" width="400" height="500"
style="stroke:none; fill: url(#mygradient)"/>
</mask>
</defs>
<g fill="red" mask= "url(#mask1)" stroke="black" stroke-width="4"
feblend="Multiply">
<rect x="5" y="5" width="390" height="90"/>
<rect x="5" y="105" width="390" height="90"/>
<rect x="5" y="205" width="390" height="90"/>
<rect x="5" y="305" width="390" height="90"/>
<rect x="5" y="405" width="390" height="90"/>
</g>
</svg>