| Index: third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
 | 
| index 0ff40ac98a76e1f0088eed1ff66a42638ab3a422..3b11423168c8b208cb3e6cdaf1c058ea797077af 100644
 | 
| --- a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
 | 
| +++ b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
 | 
| @@ -69,12 +69,12 @@ static void adjustClipRectsForChildren(const LayoutObject& layoutObject, ClipRec
 | 
|  
 | 
|  static void applyClipRects(const ClipRectsContext& context, const LayoutObject& layoutObject, LayoutPoint offset, ClipRects& clipRects)
 | 
|  {
 | 
| -    ASSERT(layoutObject.hasOverflowClip() || layoutObject.hasClip());
 | 
| +    ASSERT(layoutObject.hasOverflowClip() || layoutObject.hasClip() || layoutObject.style()->containsPaint());
 | 
|      LayoutView* view = layoutObject.view();
 | 
|      ASSERT(view);
 | 
|      if (clipRects.fixed() && context.rootLayer->layoutObject() == view)
 | 
|          offset -= toIntSize(view->frameView()->scrollPosition());
 | 
| -    if (layoutObject.hasOverflowClip()) {
 | 
| +    if (layoutObject.hasOverflowClip() || layoutObject.style()->containsPaint()) {
 | 
|          ClipRect newOverflowClip = toLayoutBox(layoutObject).overflowClipRect(offset, context.scrollbarRelevancy);
 | 
|          newOverflowClip.setHasRadius(layoutObject.style()->hasBorderRadius());
 | 
|          clipRects.setOverflowClipRect(intersection(newOverflowClip, clipRects.overflowClipRect()));
 | 
| @@ -82,6 +82,10 @@ static void applyClipRects(const ClipRectsContext& context, const LayoutObject&
 | 
|              clipRects.setPosClipRect(intersection(newOverflowClip, clipRects.posClipRect()));
 | 
|          if (layoutObject.isLayoutView())
 | 
|              clipRects.setFixedClipRect(intersection(newOverflowClip, clipRects.fixedClipRect()));
 | 
| +        if (layoutObject.style()->containsPaint()) {
 | 
| +            clipRects.setPosClipRect(intersection(newOverflowClip, clipRects.posClipRect()));
 | 
| +            clipRects.setFixedClipRect(intersection(newOverflowClip, clipRects.fixedClipRect()));
 | 
| +        }
 | 
|      }
 | 
|      if (layoutObject.hasClip()) {
 | 
|          LayoutRect newClip = toLayoutBox(layoutObject).clipRect(offset);
 | 
| @@ -213,7 +217,7 @@ void PaintLayerClipper::calculateRects(const ClipRectsContext& context, const La
 | 
|      layerBounds = LayoutRect(offset, LayoutSize(m_layoutObject.layer()->size()));
 | 
|  
 | 
|      // Update the clip rects that will be passed to child layers.
 | 
| -    if (m_layoutObject.hasOverflowClip() && shouldRespectOverflowClip(context)) {
 | 
| +    if ((m_layoutObject.hasOverflowClip() && shouldRespectOverflowClip(context)) || m_layoutObject.style()->containsPaint()) {
 | 
|          foregroundRect.intersect(toLayoutBox(m_layoutObject).overflowClipRect(offset, context.scrollbarRelevancy));
 | 
|          if (m_layoutObject.style()->hasBorderRadius())
 | 
|              foregroundRect.setHasRadius(true);
 | 
| @@ -267,7 +271,7 @@ void PaintLayerClipper::calculateClipRects(const ClipRectsContext& context, Clip
 | 
|  
 | 
|      adjustClipRectsForChildren(m_layoutObject, clipRects);
 | 
|  
 | 
| -    if ((m_layoutObject.hasOverflowClip() && shouldRespectOverflowClip(context)) || m_layoutObject.hasClip()) {
 | 
| +    if ((m_layoutObject.hasOverflowClip() && shouldRespectOverflowClip(context)) || m_layoutObject.hasClip() || m_layoutObject.style()->containsPaint()) {
 | 
|          // This offset cannot use convertToLayerCoords, because sometimes our rootLayer may be across
 | 
|          // some transformed layer boundary, for example, in the PaintLayerCompositor overlapMap, where
 | 
|          // clipRects are needed in view space.
 | 
| 
 |