Index: Source/core/paint/DeprecatedPaintLayer.cpp |
diff --git a/Source/core/paint/DeprecatedPaintLayer.cpp b/Source/core/paint/DeprecatedPaintLayer.cpp |
index d8f03d090fff07c17154f39b873ce0696a9e52cc..592d299bfe0b85a9645028f6a3dfbdab04e6ffd6 100644 |
--- a/Source/core/paint/DeprecatedPaintLayer.cpp |
+++ b/Source/core/paint/DeprecatedPaintLayer.cpp |
@@ -1166,7 +1166,8 @@ LayoutRect DeprecatedPaintLayer::transparencyClipBox(const DeprecatedPaintLayer* |
IntPoint pixelSnappedDelta = roundedIntPoint(delta); |
TransformationMatrix transform; |
transform.translate(pixelSnappedDelta.x(), pixelSnappedDelta.y()); |
- transform = transform * *layer->transform(); |
+ if (layer->transform()) |
+ transform = transform * *layer->transform(); |
// We don't use fragment boxes when collecting a transformed layer's bounding box, since it always |
// paints unfragmented. |
@@ -2488,7 +2489,7 @@ LayoutRect DeprecatedPaintLayer::boundingBoxForCompositing(const DeprecatedPaint |
result.expand(m_layoutObject->style()->filterOutsets()); |
} |
- if (paintsWithTransform(PaintBehaviorNormal) || (options == ApplyBoundsChickenEggHacks && transform())) |
+ if (transform() && (paintsWithTransform(PaintBehaviorNormal) || options == ApplyBoundsChickenEggHacks)) |
result = transform()->mapRect(result); |
if (enclosingPaginationLayer()) { |
@@ -2610,7 +2611,7 @@ bool DeprecatedPaintLayer::hasCompositedClippingMask() const |
bool DeprecatedPaintLayer::paintsWithTransform(PaintBehavior paintBehavior) const |
{ |
- return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayers) || compositingState() != PaintsIntoOwnBacking); |
+ return (transform() || layoutObject()->style()->position() == FixedPosition) && ((paintBehavior & PaintBehaviorFlattenCompositingLayers) || compositingState() != PaintsIntoOwnBacking); |
} |
bool DeprecatedPaintLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const |