Index: Source/core/rendering/svg/SVGRenderingContext.cpp |
diff --git a/Source/core/rendering/svg/SVGRenderingContext.cpp b/Source/core/rendering/svg/SVGRenderingContext.cpp |
index 6e13c675ad2f88a85ffb58254e24dbcc59e78f8c..c7598a478eeb9224f217157266b07aab5ce7394d 100644 |
--- a/Source/core/rendering/svg/SVGRenderingContext.cpp |
+++ b/Source/core/rendering/svg/SVGRenderingContext.cpp |
@@ -119,6 +119,7 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI |
if (opacity < 1 || hasBlendMode || style->hasIsolation()) { |
FloatRect repaintRect = m_object->repaintRectInLocalCoordinates(); |
m_paintInfo->context->clip(repaintRect); |
+ |
if (hasBlendMode) { |
if (!(m_renderingFlags & RestoreGraphicsContext)) { |
m_paintInfo->context->save(); |
@@ -126,7 +127,12 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI |
} |
m_paintInfo->context->setCompositeOperation(CompositeSourceOver, style->blendMode()); |
} |
+ |
m_paintInfo->context->beginTransparencyLayer(opacity); |
+ |
+ if (hasBlendMode) |
+ m_paintInfo->context->setCompositeOperation(CompositeSourceOver, blink::WebBlendModeNormal); |
+ |
m_renderingFlags |= EndOpacityLayer; |
} |