Index: ui/compositor/layer.cc |
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc |
index e05372c26faf45b50cbe45894b0459658e65888f..725e382577753ab415777a69a402d17b1512c9bd 100644 |
--- a/ui/compositor/layer.cc |
+++ b/ui/compositor/layer.cc |
@@ -615,10 +615,13 @@ bool Layer::GetTransformRelativeTo(const Layer* ancestor, |
gfx::Transform* transform) const { |
const Layer* p = this; |
for (; p && p != ancestor; p = p->parent()) { |
+ gfx::Transform translation; |
+ translation.Translate(static_cast<float>(p->bounds().x()), |
+ static_cast<float>(p->bounds().y())); |
if (p->transform().HasChange()) |
- transform->ConcatTransform(p->transform()); |
- transform->ConcatTranslate(static_cast<float>(p->bounds().x()), |
- static_cast<float>(p->bounds().y())); |
+ *transform = translation * p->transform() * *transform; |
+ else |
+ *transform = translation * *transform; |
} |
return p == ancestor; |
} |
@@ -781,7 +784,9 @@ void Layer::RecomputeTransform() { |
0, 1.0f / device_scale_factor_, 0, |
0, 0, 1); |
transform.ConcatTransform(transform_); |
- transform.ConcatTranslate(bounds_.x(), bounds_.y()); |
+ gfx::Transform translate; |
+ translate.Translate(bounds_.x(), bounds_.y()); |
+ transform.ConcatTransform(translate); |
transform.ConcatTransform(scale_translate); |
web_layer_->setTransform(transform.matrix()); |
} |