diff --git a/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp b/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp index 45d61484b0f..cdc80391144 100644 --- a/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp +++ b/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp @@ -319,9 +319,6 @@ nsSVGImageFrame::PaintSVG(nsISVGRendererCanvas* canvas) mWidth->GetValue(&width); mHeight->GetValue(&height); - if (GetStyleDisplay()->IsScrollableOverflow()) - canvas->SetClipRect(ctm, x, y, width, height); - PRUint32 nativeWidth, nativeHeight; mSurface->GetWidth(&nativeWidth); mSurface->GetHeight(&nativeHeight); @@ -338,9 +335,17 @@ nsSVGImageFrame::PaintSVG(nsISVGRendererCanvas* canvas) ctm->Translate(x, y, getter_AddRefs(ctmXY)); ctmXY->Multiply(trans, getter_AddRefs(fini)); + if (GetStyleDisplay()->IsScrollableOverflow()) { + canvas->PushClip(); + canvas->SetClipRect(ctm, x, y, width, height); + } + canvas->CompositeSurfaceMatrix(mSurface, fini, mStyleContext->GetStyleDisplay()->mOpacity); + + if (GetStyleDisplay()->IsScrollableOverflow()) + canvas->PopClip(); } return NS_OK;