diff --git a/layout/reftests/svg/pattern-scale-01-ref.svg b/layout/reftests/svg/pattern-scale-01-ref.svg new file mode 100644 index 000000000000..b8d48935d911 --- /dev/null +++ b/layout/reftests/svg/pattern-scale-01-ref.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/layout/reftests/svg/pattern-scale-01.svg b/layout/reftests/svg/pattern-scale-01.svg new file mode 100644 index 000000000000..39a08ed5ed2e --- /dev/null +++ b/layout/reftests/svg/pattern-scale-01.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 015e98541f91..ce2ec1c6a2e7 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -176,6 +176,7 @@ fails-if(Android&&layersOpenGL) == path-04.svg pass.svg == pattern-live-01a.svg pattern-live-01-ref.svg == pattern-live-01b.svg pattern-live-01-ref.svg == pattern-live-01c.svg pattern-live-01-ref.svg +== pattern-scale-01.svg pattern-scale-01-ref.svg == pattern-transform-presence-01.svg pattern-transform-presence-01-ref.svg == polygon-marker-01.svg pass.svg == polygon-points-negative-01.svg pass.svg diff --git a/layout/svg/base/src/nsSVGPatternFrame.cpp b/layout/svg/base/src/nsSVGPatternFrame.cpp index f563ad9e2ede..c910d57f1d82 100644 --- a/layout/svg/base/src/nsSVGPatternFrame.cpp +++ b/layout/svg/base/src/nsSVGPatternFrame.cpp @@ -261,8 +261,10 @@ nsSVGPatternFrame::PaintPattern(gfxASurface** surface, bool resultOverflows; gfxIntSize surfaceSize = - nsSVGUtils::ConvertToSurfaceSize(gfxSize(patternWidth, patternHeight), - &resultOverflows); + nsSVGUtils::ConvertToSurfaceSize( + gfxSize(patternWidth * fabs(patternMatrix->xx), + patternHeight * fabs(patternMatrix->yy)), + &resultOverflows); // 0 disables rendering, < 0 is an error if (surfaceSize.width <= 0 || surfaceSize.height <= 0)