The webkit parser casts units to integer instead of keeping them as double or float. This causes imprecise placing of objects if they use webkit-transforms with transform(px, px) notation. In order to fix this, I think we need to fix CSSStyleSelector.cpp line 3051-3052 from: } else if (CSSPrimitiveValue::isUnitTypeLength(type)) l = Length(primitiveValue->computeLengthIntForLength(style, rootStyle, multiplier), Fixed); to: } else if (CSSPrimitiveValue::isUnitTypeLength(type)) l = Length(primitiveValue->computeLengthFloat(style, rootStyle, multiplier, false), Fixed); Attached is a iip file that contains a page that uses transforms with px notation.
Created attachment 81339 [details] zip with HTML sample
Created attachment 81343 [details] correct zip with html. Please ignore the first one
(In reply to comment #0) > The webkit parser casts units to integer instead of keeping them as double or float. > This causes imprecise placing of objects if they use webkit-transforms with transform(px, px) notation. > > In order to fix this, I think we need to fix CSSStyleSelector.cpp line 3051-3052 > from: > } else if (CSSPrimitiveValue::isUnitTypeLength(type)) > l = Length(primitiveValue->computeLengthIntForLength(style, rootStyle, multiplier), Fixed); > to: > } else if (CSSPrimitiveValue::isUnitTypeLength(type)) > l = Length(primitiveValue->computeLengthFloat(style, rootStyle, multiplier, false), Fixed); > > Attached is a iip file that contains a page that uses transforms with px notation. My proposal doesn't work because length always wants to be an integer. It seems that it needs to be expanded to accept a float...
*** This bug has been marked as a duplicate of bug 52699 ***