summaryrefslogtreecommitdiff
path: root/chromium/ui/compositor/dip_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/compositor/dip_util.cc')
-rw-r--r--chromium/ui/compositor/dip_util.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/chromium/ui/compositor/dip_util.cc b/chromium/ui/compositor/dip_util.cc
index 0aad3970242..1dd91456930 100644
--- a/chromium/ui/compositor/dip_util.cc
+++ b/chromium/ui/compositor/dip_util.cc
@@ -93,6 +93,14 @@ void SnapLayerToPhysicalPixelBoundary(ui::Layer* snapped_layer,
gfx::Vector2dF fudge = view_offset_snapped - view_offset;
fudge.Scale(1.0 / scale_factor);
+
+ // Apply any scale originating from transforms to the fudge.
+ gfx::Transform transform;
+ layer_to_snap->parent()->GetTargetTransformRelativeTo(snapped_layer,
+ &transform);
+ gfx::Vector2dF transform_scale = transform.Scale2d();
+ fudge.Scale(1.0 / transform_scale.x(), 1.0 / transform_scale.y());
+
layer_to_snap->SetSubpixelPositionOffset(fudge);
#if DCHECK_IS_ON()
gfx::PointF layer_offset;
@@ -105,6 +113,7 @@ void SnapLayerToPhysicalPixelBoundary(ui::Layer* snapped_layer,
} else {
origin = layer_to_snap->position();
}
+ origin.Scale(transform_scale.x(), transform_scale.y());
CheckSnapped((layer_offset.x() + origin.x()) * scale_factor);
CheckSnapped((layer_offset.y() + origin.y()) * scale_factor);
#endif