| Index: third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp | 
| diff --git a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp | 
| index 14c00546a8a292551c6347ed9a5fb84f5be9875a..0e34c2218893bc322488de07008eafeff852040f 100644 | 
| --- a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp | 
| +++ b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp | 
| @@ -307,14 +307,14 @@ void PaintInvalidationState::updateForNormalChildren() | 
|  | 
| const LayoutBox& box = toLayoutBox(m_currentObject); | 
|  | 
| -    // Do not clip scroll layer contents because the compositor expects the whole layer | 
| -    // to be always invalidated in-time. | 
| -    if (box == m_paintInvalidationContainer && box.scrollsOverflow()) | 
| +    // Do not clip or scroll for the paint invalidation container, if it scrolls overflow, because it will always use composited | 
| +    // scrolling in this case. | 
| +    if (box == m_paintInvalidationContainer && box.scrollsOverflow()) { | 
| ASSERT(!m_clipped); // The box establishes paint invalidation container, so no m_clipped inherited. | 
| -    else | 
| +    } else { | 
| addClipRectRelativeToPaintOffset(box.overflowClipRect(LayoutPoint())); | 
| - | 
| -    m_paintOffset -= box.scrolledContentOffset(); | 
| +        m_paintOffset -= box.scrolledContentOffset(); | 
| +    } | 
|  | 
| // FIXME: <http://bugs.webkit.org/show_bug.cgi?id=13443> Apply control clip if present. | 
| } | 
| @@ -323,7 +323,11 @@ static FloatPoint slowLocalToAncestorPoint(const LayoutObject& object, const Lay | 
| { | 
| if (object.isLayoutView()) | 
| return toLayoutView(object).localToAncestorPoint(point, &ancestor, TraverseDocumentBoundaries | InputIsInFrameCoordinates); | 
| -    return object.localToAncestorPoint(point, &ancestor, TraverseDocumentBoundaries); | 
| +    FloatPoint result = object.localToAncestorPoint(point, &ancestor, TraverseDocumentBoundaries); | 
| +    // Paint invalidation does not include scroll of the ancestor. | 
| +    if (ancestor.isBox()) | 
| +        result.move(toLayoutBox(&ancestor)->scrolledContentOffset()); | 
| +    return result; | 
| } | 
|  | 
| LayoutPoint PaintInvalidationState::computePositionFromPaintInvalidationBacking() const | 
|  |