Index: Source/core/rendering/svg/RenderSVGShape.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGShape.cpp b/Source/core/rendering/svg/RenderSVGShape.cpp |
index aa5b21d9f0544606726d6dd23fc0bf153708d34f..6e0a737b53d824451e27ba3af3238187577a45c8 100644 |
--- a/Source/core/rendering/svg/RenderSVGShape.cpp |
+++ b/Source/core/rendering/svg/RenderSVGShape.cpp |
@@ -236,14 +236,18 @@ void RenderSVGShape::paint(PaintInfo& paintInfo, const LayoutPoint&) |
if (svgStyle.hasVisibleStroke()) { |
GraphicsContextStateSaver stateSaver(*childPaintInfo.context, false); |
AffineTransform nonScalingTransform; |
+ const AffineTransform* additionalPaintServerTransform = 0; |
if (hasNonScalingStroke()) { |
- AffineTransform nonScalingTransform = nonScalingStrokeTransform(); |
+ nonScalingTransform = nonScalingStrokeTransform(); |
if (!setupNonScalingStrokeContext(nonScalingTransform, stateSaver)) |
return; |
+ |
+ // Non-scaling stroke needs to reset the transform back to the host transform. |
+ additionalPaintServerTransform = &nonScalingTransform; |
} |
- if (!SVGRenderSupport::updateGraphicsContext(stateSaver, style(), *this, ApplyToStrokeMode)) |
+ if (!SVGRenderSupport::updateGraphicsContext(stateSaver, style(), *this, ApplyToStrokeMode, additionalPaintServerTransform)) |
break; |
strokeShape(childPaintInfo.context); |
} |