Bug 1343664 - Part 1. Correct transform matrix.
MozReview-Commit-ID: Eg6i4SoSPoe
--- a/layout/svg/nsFilterInstance.cpp
+++ b/layout/svg/nsFilterInstance.cpp
@@ -524,19 +524,20 @@ nsFilterInstance::Render(DrawTarget* aDr
}
AutoRestoreTransform autoRestoreTransform(aDrawTarget);
gfxMatrix filterSpaceToUserSpace = mPaintTransform;
DebugOnly<bool> invertible = filterSpaceToUserSpace.Invert();
MOZ_ASSERT(invertible);
filterSpaceToUserSpace *= nsSVGUtils::GetCSSPxToDevPxMatrix(mTargetFrame);
- aDrawTarget->SetTransform(ToMatrix(filterSpaceToUserSpace) *
- aDrawTarget->GetTransform() *
- Matrix::Translation(filterRect.TopLeft()));
+ Matrix newTM =
+ ToMatrix(filterSpaceToUserSpace).PreTranslate(filterRect.x, filterRect.y) *
+ aDrawTarget->GetTransform();
+ aDrawTarget->SetTransform(newTM);
ComputeNeededBoxes();
DrawResult result = BuildSourceImage();
if (result != DrawResult::SUCCESS){
return result;
}
result = BuildSourcePaints();