diff options
Diffstat (limited to 'layout/base/nsDisplayList.cpp')
-rw-r--r-- | layout/base/nsDisplayList.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp index cd0c623df..44fc95deb 100644 --- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -5918,11 +5918,16 @@ nsDisplayTransform::GetResultingTransformMatrixInternal(const FrameTransformProp bool hasTransformFromSVGParent = hasSVGTransforms && !transformFromSVGParent.IsIdentity(); + bool shouldRound = true; + // An SVG frame should not have its translation rounded. // Note it's possible that the SVG frame doesn't have an SVG // transform but only has a CSS transform. - bool shouldRound = !(frame && frame->IsFrameOfType(nsIFrame::eSVG)); - + if (frame && frame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT) && + !(frame->GetType() == nsGkAtoms::svgOuterSVGAnonChildFrame)) { + shouldRound = false; + } + /* Transformed frames always have a transform, or are preserving 3d (and might still have perspective!) */ if (aProperties.mTransformList) { result = nsStyleTransformMatrix::ReadTransforms(aProperties.mTransformList->mHead, |