Index: Source/core/rendering/svg/RenderSVGResourceFilter.cpp |
=================================================================== |
--- Source/core/rendering/svg/RenderSVGResourceFilter.cpp (revision 181390) |
+++ Source/core/rendering/svg/RenderSVGResourceFilter.cpp (working copy) |
@@ -165,7 +165,7 @@ |
ASSERT(sourceGraphic); |
builder.setSourceGraphic(sourceGraphic); |
RefPtr<ImageFilter> imageFilter = builder.build(filterData->builder->lastEffect(), ColorSpaceDeviceRGB); |
- FloatRect boundaries = enclosingIntRect(filterData->boundaries); |
+ FloatRect boundaries = filterData->boundaries; |
context->save(); |
FloatSize deviceSize = context->getCTM().mapSize(boundaries.size()); |
@@ -181,8 +181,9 @@ |
float scale = sqrtf(FilterEffect::maxFilterArea() / scaledArea); |
context->scale(scale, scale); |
} |
- // Clip drawing of filtered image to primitive boundaries. |
- context->clipRect(boundaries); |
+ // Clip drawing of filtered image to the minimum required paint rect. |
+ FilterEffect* lastEffect = filterData->builder->lastEffect(); |
+ context->clipRect(lastEffect->determineAbsolutePaintRect(lastEffect->maxEffectRect())); |
if (filterElement->hasAttribute(SVGNames::filterResAttr)) { |
// Get boundaries in device coords. |
// FIXME: See crbug.com/382491. Is the use of getCTM OK here, given it does not include device |