static void convertTargetSpaceQuadToCompositedLayer(const FloatQuad& targetSpaceQuad, LayoutObject* targetLayoutObject, const LayoutBoxModelObject& paintInvalidationContainer, FloatQuad& compositedSpaceQuad)
{
    DCHECK(targetLayoutObject);
    for (unsigned i = 0; i < 4; ++i) {
        IntPoint point;
        switch (i) {
        case 0:
            point = roundedIntPoint(targetSpaceQuad.p1());
            break;
        case 1:
            point = roundedIntPoint(targetSpaceQuad.p2());
            break;
        case 2:
            point = roundedIntPoint(targetSpaceQuad.p3());
            break;
        case 3:
            point = roundedIntPoint(targetSpaceQuad.p4());
            break;
        }

        // FIXME: this does not need to be absolute, just in the paint invalidation container's space.
        point = targetLayoutObject->frame()->view()->contentsToRootFrame(point);
        point = paintInvalidationContainer.frame()->view()->rootFrameToContents(point);
        FloatPoint floatPoint = paintInvalidationContainer.absoluteToLocal(point, UseTransforms);
        PaintLayer::mapPointInPaintInvalidationContainerToBacking(paintInvalidationContainer, floatPoint);

        switch (i) {
        case 0:
            compositedSpaceQuad.setP1(floatPoint);
            break;
        case 1:
            compositedSpaceQuad.setP2(floatPoint);
            break;
        case 2:
            compositedSpaceQuad.setP3(floatPoint);
            break;
        case 3:
            compositedSpaceQuad.setP4(floatPoint);
            break;
        }
    }
}