| Index: Source/core/css/CSSToStyleMap.cpp | 
| diff --git a/Source/core/css/CSSToStyleMap.cpp b/Source/core/css/CSSToStyleMap.cpp | 
| index 10530f487d080f296c199bb96fe74af669677dbe..27eabaf8cee6f4ddb17466f6b1c898035b8f4d69 100644 | 
| --- a/Source/core/css/CSSToStyleMap.cpp | 
| +++ b/Source/core/css/CSSToStyleMap.cpp | 
| @@ -47,9 +47,9 @@ const RenderStyle* CSSToStyleMap::style() const | 
| return m_state.style(); | 
| } | 
|  | 
| -const RenderStyle* CSSToStyleMap::rootElementStyle() const | 
| +const CSSToLengthConversionData& CSSToStyleMap::cssToLengthConversionData() const | 
| { | 
| -    return m_state.rootElementStyle(); | 
| +    return m_state.cssToLengthConversionData(); | 
| } | 
|  | 
| bool CSSToStyleMap::useSVGZoomRules() const | 
| @@ -205,16 +205,14 @@ void CSSToStyleMap::mapFillSize(CSSPropertyID, FillLayer* layer, CSSValue* value | 
| return; | 
| } | 
|  | 
| -    float zoomFactor = style()->effectiveZoom(); | 
| - | 
| Length firstLength; | 
| Length secondLength; | 
|  | 
| if (Pair* pair = primitiveValue->getPairValue()) { | 
| -        firstLength = pair->first()->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); | 
| -        secondLength = pair->second()->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); | 
| +        firstLength = pair->first()->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| +        secondLength = pair->second()->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| } else { | 
| -        firstLength = primitiveValue->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); | 
| +        firstLength = primitiveValue->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| secondLength = Length(); | 
| } | 
|  | 
| @@ -231,8 +229,6 @@ void CSSToStyleMap::mapFillXPosition(CSSPropertyID propertyID, FillLayer* layer, | 
| if (!value->isPrimitiveValue()) | 
| return; | 
|  | 
| -    float zoomFactor = style()->effectiveZoom(); | 
| - | 
| CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| Pair* pair = primitiveValue->getPairValue(); | 
| if (pair) { | 
| @@ -242,11 +238,11 @@ void CSSToStyleMap::mapFillXPosition(CSSPropertyID propertyID, FillLayer* layer, | 
|  | 
| Length length; | 
| if (primitiveValue->isLength()) | 
| -        length = primitiveValue->computeLength<Length>(style(), rootElementStyle(), zoomFactor); | 
| +        length = primitiveValue->computeLength<Length>(cssToLengthConversionData()); | 
| else if (primitiveValue->isPercentage()) | 
| length = Length(primitiveValue->getDoubleValue(), Percent); | 
| else if (primitiveValue->isCalculatedPercentageWithLength()) | 
| -        length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), rootElementStyle(), zoomFactor)); | 
| +        length = Length(primitiveValue->cssCalcValue()->toCalcValue(cssToLengthConversionData())); | 
| else if (primitiveValue->isViewportPercentageLength()) | 
| length = primitiveValue->viewportPercentageLength(); | 
| else | 
| @@ -262,8 +258,6 @@ void CSSToStyleMap::mapFillYPosition(CSSPropertyID propertyID, FillLayer* layer, | 
| if (!value->isPrimitiveValue()) | 
| return; | 
|  | 
| -    float zoomFactor = style()->effectiveZoom(); | 
| - | 
| CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| Pair* pair = primitiveValue->getPairValue(); | 
| if (pair) { | 
| @@ -273,11 +267,11 @@ void CSSToStyleMap::mapFillYPosition(CSSPropertyID propertyID, FillLayer* layer, | 
|  | 
| Length length; | 
| if (primitiveValue->isLength()) | 
| -        length = primitiveValue->computeLength<Length>(style(), rootElementStyle(), zoomFactor); | 
| +        length = primitiveValue->computeLength<Length>(cssToLengthConversionData()); | 
| else if (primitiveValue->isPercentage()) | 
| length = Length(primitiveValue->getDoubleValue(), Percent); | 
| else if (primitiveValue->isCalculatedPercentageWithLength()) | 
| -        length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), rootElementStyle(), zoomFactor)); | 
| +        length = Length(primitiveValue->cssCalcValue()->toCalcValue(cssToLengthConversionData())); | 
| else if (primitiveValue->isViewportPercentageLength()) | 
| length = primitiveValue->viewportPercentageLength(); | 
| else | 
| @@ -615,8 +609,8 @@ BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const | 
| if (!value || !value->isPrimitiveValue()) | 
| return BorderImageLengthBox(); | 
|  | 
| -    // Get our zoom value. | 
| float zoom = useSVGZoomRules() ? 1.0f : style()->effectiveZoom(); | 
| +    const CSSToLengthConversionData& conversionData = cssToLengthConversionData().copyWithAdjustedZoom(zoom); | 
|  | 
| // Retrieve the primitive value. | 
| CSSPrimitiveValue* borderWidths = toCSSPrimitiveValue(value); | 
| @@ -629,28 +623,28 @@ BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const | 
| else if (slices->top()->isPercentage()) | 
| box.setTop(Length(slices->top()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); | 
| else if (slices->top()->getValueID() != CSSValueAuto) | 
| -        box.setTop(slices->top()->computeLength<Length>(style(), rootElementStyle(), zoom)); | 
| +        box.setTop(slices->top()->computeLength<Length>(conversionData)); | 
|  | 
| if (slices->right()->isNumber()) | 
| box.setRight(slices->right()->getDoubleValue()); | 
| else if (slices->right()->isPercentage()) | 
| box.setRight(Length(slices->right()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); | 
| else if (slices->right()->getValueID() != CSSValueAuto) | 
| -        box.setRight(slices->right()->computeLength<Length>(style(), rootElementStyle(), zoom)); | 
| +        box.setRight(slices->right()->computeLength<Length>(conversionData)); | 
|  | 
| if (slices->bottom()->isNumber()) | 
| box.setBottom(slices->bottom()->getDoubleValue()); | 
| else if (slices->bottom()->isPercentage()) | 
| box.setBottom(Length(slices->bottom()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); | 
| else if (slices->bottom()->getValueID() != CSSValueAuto) | 
| -        box.setBottom(slices->bottom()->computeLength<Length>(style(), rootElementStyle(), zoom)); | 
| +        box.setBottom(slices->bottom()->computeLength<Length>(conversionData)); | 
|  | 
| if (slices->left()->isNumber()) | 
| box.setLeft(slices->left()->getDoubleValue()); | 
| else if (slices->left()->isPercentage()) | 
| box.setLeft(Length(slices->left()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); | 
| else if (slices->left()->getValueID() != CSSValueAuto) | 
| -        box.setLeft(slices->left()->computeLength<Length>(style(), rootElementStyle(), zoom)); | 
| +        box.setLeft(slices->left()->computeLength<Length>(conversionData)); | 
|  | 
| return box; | 
| } | 
|  |