I am developing in Chrome and Firefox and I’ve been having trouble with an SVG filter. when applied to a rect it seems to affect more than just the <rect> element. Below is a screenshot of the result. As you can see it shades outside of the <rect> which is undesired.
Below is the result in Chrome:

Below is the result in Firefox:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="100%" height="100%">
<defs>
<filter id="dropshadow" height="130%">
<feGaussianBlur in="SourceAlpha" stdDeviation="10"/>
<feOffset dx="5" dy="5" result="offsetblur"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
<filter id = "I">
<feSpecularLighting specularExponent="2" lighting-color="#F3F4F3">
<fePointLight x="300" y="100" z="100"/>
</feSpecularLighting>
</filter>
</filter>
</defs>
<rect x="33%" y="33%" rx="30" ry="30" width="33%" height="300px" style="fill:#FFFFFF; filter:url(#I)"></rect>
</svg>
</body>
</html>
This happens because the default filter effects region, as defined by the
x,y,widthandheightparameters on the<filter>element, is 120% of the bounding box of the filtered element, not 100%.The specification clarifies:
Changing this to 100% would still affect the entire bounding box, though, so including the areas outside the rounded corners of the
<rect>. If you want to limit it to just the rectangle, you can usefeComposite. E.g.Also, you’ve nested the
#Ifilter inside the#dropshadowfilter. That’s not something you can do. Are you trying to combine the lighting and drop shadow? If so, you could do that like this:This doesn’t seem to work to work in Firefox, though, but then your original example doesn’t work in Firefox for me either.