Since we cannot make blend modes work correctly over transparent backgrounds within the confines of SVG, we will need a good workaround. The problems are, unfortunately, extremely user-visible.
The best idea I've been able to come up with so far is to add an opaque rectangle as a child of the root <svg> element, underneath the bottom-most layer. The rectangle should be:
- opaque
- have its fill synchronized with the document background color
- have its dimensions synchronized with the document dimensions
The rectangle would be added the first time that blend mode is engaged for a layer in the document, and ideally removed when no layers any longer have a special blending mode. Export transparency should also be disabled when blend modes are in use.
Edit: This is about the double counting background problem as described in http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Filters-Compositing.html
Note that this only applies to blend modes applied via the "blend mode" selector UI. If people want to use feBlend directly as a filter, that usage should probably not trigger the "backstop rectangle". Also note that this workaround is only useful if "blend modes" are restricted to layers.