Revert again "Remove layer integral offset snapping" (#18132) (#18138)

diff --git a/flow/layers/container_layer.cc b/flow/layers/container_layer.cc
index 5dcf2aa..39372f6 100644
--- a/flow/layers/container_layer.cc
+++ b/flow/layers/container_layer.cc
@@ -65,15 +65,6 @@
   }
 }
 
-void ContainerLayer::TryToPrepareRasterCache(PrerollContext* context,
-                                             Layer* layer,
-                                             const SkMatrix& matrix) {
-  if (!context->has_platform_view && context->raster_cache &&
-      SkRect::Intersects(context->cull_rect, layer->paint_bounds())) {
-    context->raster_cache->Prepare(context, layer, matrix);
-  }
-}
-
 #if defined(OS_FUCHSIA)
 
 void ContainerLayer::UpdateScene(SceneUpdateContext& context) {
diff --git a/flow/layers/container_layer.h b/flow/layers/container_layer.h
index c012e6f..df5be5e 100644
--- a/flow/layers/container_layer.h
+++ b/flow/layers/container_layer.h
@@ -37,20 +37,6 @@
   // For OpacityLayer to restructure to have a single child.
   void ClearChildren() { layers_.clear(); }
 
-  // Try to prepare the raster cache for a given layer.
-  //
-  // The raster cache would fail if either of the followings is true:
-  // 1. The context has a platform view.
-  // 2. The context does not have a valid raster cache.
-  // 3. The layer's paint bounds does not intersect with the cull rect.
-  //
-  // We make this a static function instead of a member function that directy
-  // uses the "this" pointer as the layer because we sometimes need to raster
-  // cache a child layer and one can't access its child's protected method.
-  static void TryToPrepareRasterCache(PrerollContext* context,
-                                      Layer* layer,
-                                      const SkMatrix& matrix);
-
  private:
   std::vector<std::shared_ptr<Layer>> layers_;
 
diff --git a/flow/layers/image_filter_layer.cc b/flow/layers/image_filter_layer.cc
index 3a1ebbc..bf787a3 100644
--- a/flow/layers/image_filter_layer.cc
+++ b/flow/layers/image_filter_layer.cc
@@ -28,13 +28,26 @@
     set_paint_bounds(child_paint_bounds_);
   }
 
-  TryToPrepareRasterCache(context, this, matrix);
+  if (!context->has_platform_view && context->raster_cache &&
+      SkRect::Intersects(context->cull_rect, paint_bounds())) {
+    SkMatrix ctm = matrix;
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+    ctm = RasterCache::GetIntegralTransCTM(ctm);
+#endif
+    context->raster_cache->Prepare(context, this, ctm);
+  }
 }
 
 void ImageFilterLayer::Paint(PaintContext& context) const {
   TRACE_EVENT0("flutter", "ImageFilterLayer::Paint");
   FML_DCHECK(needs_painting());
 
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  SkAutoCanvasRestore save(context.leaf_nodes_canvas, true);
+  context.leaf_nodes_canvas->setMatrix(RasterCache::GetIntegralTransCTM(
+      context.leaf_nodes_canvas->getTotalMatrix()));
+#endif
+
   if (context.raster_cache &&
       context.raster_cache->Draw(this, *context.leaf_nodes_canvas)) {
     return;
diff --git a/flow/layers/image_filter_layer_unittests.cc b/flow/layers/image_filter_layer_unittests.cc
index 305ec01..f4f621a 100644
--- a/flow/layers/image_filter_layer_unittests.cc
+++ b/flow/layers/image_filter_layer_unittests.cc
@@ -60,11 +60,14 @@
   layer->Paint(paint_context());
   EXPECT_EQ(mock_canvas().draw_calls(),
             std::vector({
+                MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+                MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
                 MockCanvas::DrawCall{
-                    0, MockCanvas::SaveLayerData{child_bounds, filter_paint,
-                                                 nullptr, 1}},
+                    1, MockCanvas::SaveLayerData{child_bounds, filter_paint,
+                                                 nullptr, 2}},
                 MockCanvas::DrawCall{
-                    1, MockCanvas::DrawPathData{child_path, child_paint}},
+                    2, MockCanvas::DrawPathData{child_path, child_paint}},
+                MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
                 MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}},
             }));
 }
@@ -93,11 +96,14 @@
   layer->Paint(paint_context());
   EXPECT_EQ(mock_canvas().draw_calls(),
             std::vector({
+                MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+                MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
                 MockCanvas::DrawCall{
-                    0, MockCanvas::SaveLayerData{child_bounds, filter_paint,
-                                                 nullptr, 1}},
+                    1, MockCanvas::SaveLayerData{child_bounds, filter_paint,
+                                                 nullptr, 2}},
                 MockCanvas::DrawCall{
-                    1, MockCanvas::DrawPathData{child_path, child_paint}},
+                    2, MockCanvas::DrawPathData{child_path, child_paint}},
+                MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
                 MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}},
             }));
 }
@@ -126,11 +132,14 @@
   layer->Paint(paint_context());
   EXPECT_EQ(mock_canvas().draw_calls(),
             std::vector({
+                MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+                MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
                 MockCanvas::DrawCall{
-                    0, MockCanvas::SaveLayerData{child_bounds, filter_paint,
-                                                 nullptr, 1}},
+                    1, MockCanvas::SaveLayerData{child_bounds, filter_paint,
+                                                 nullptr, 2}},
                 MockCanvas::DrawCall{
-                    1, MockCanvas::DrawPathData{child_path, child_paint}},
+                    2, MockCanvas::DrawPathData{child_path, child_paint}},
+                MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
                 MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}},
             }));
 }
@@ -168,16 +177,19 @@
   SkPaint filter_paint;
   filter_paint.setImageFilter(layer_filter);
   layer->Paint(paint_context());
-  EXPECT_EQ(
-      mock_canvas().draw_calls(),
-      std::vector({MockCanvas::DrawCall{
-                       0, MockCanvas::SaveLayerData{children_bounds,
-                                                    filter_paint, nullptr, 1}},
-                   MockCanvas::DrawCall{
-                       1, MockCanvas::DrawPathData{child_path1, child_paint1}},
-                   MockCanvas::DrawCall{
-                       1, MockCanvas::DrawPathData{child_path2, child_paint2}},
-                   MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}}}));
+  EXPECT_EQ(mock_canvas().draw_calls(),
+            std::vector(
+                {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+                 MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
+                 MockCanvas::DrawCall{
+                     1, MockCanvas::SaveLayerData{children_bounds, filter_paint,
+                                                  nullptr, 2}},
+                 MockCanvas::DrawCall{
+                     2, MockCanvas::DrawPathData{child_path1, child_paint1}},
+                 MockCanvas::DrawCall{
+                     2, MockCanvas::DrawPathData{child_path2, child_paint2}},
+                 MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
+                 MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}}}));
 }
 
 TEST_F(ImageFilterLayerTest, Nested) {
@@ -225,16 +237,22 @@
   layer1->Paint(paint_context());
   EXPECT_EQ(mock_canvas().draw_calls(),
             std::vector({
+                MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+                MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
                 MockCanvas::DrawCall{
-                    0, MockCanvas::SaveLayerData{children_bounds, filter_paint1,
-                                                 nullptr, 1}},
+                    1, MockCanvas::SaveLayerData{children_bounds, filter_paint1,
+                                                 nullptr, 2}},
                 MockCanvas::DrawCall{
-                    1, MockCanvas::DrawPathData{child_path1, child_paint1}},
+                    2, MockCanvas::DrawPathData{child_path1, child_paint1}},
+                MockCanvas::DrawCall{2, MockCanvas::SaveData{3}},
+                MockCanvas::DrawCall{3, MockCanvas::SetMatrixData{SkMatrix()}},
                 MockCanvas::DrawCall{
-                    1, MockCanvas::SaveLayerData{child_path2.getBounds(),
-                                                 filter_paint2, nullptr, 2}},
+                    3, MockCanvas::SaveLayerData{child_path2.getBounds(),
+                                                 filter_paint2, nullptr, 4}},
                 MockCanvas::DrawCall{
-                    2, MockCanvas::DrawPathData{child_path2, child_paint2}},
+                    4, MockCanvas::DrawPathData{child_path2, child_paint2}},
+                MockCanvas::DrawCall{4, MockCanvas::RestoreData{3}},
+                MockCanvas::DrawCall{3, MockCanvas::RestoreData{2}},
                 MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
                 MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}},
             }));
diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc
index 670492b..1eeb640 100644
--- a/flow/layers/opacity_layer.cc
+++ b/flow/layers/opacity_layer.cc
@@ -48,7 +48,14 @@
 
   {
     set_paint_bounds(paint_bounds().makeOffset(offset_.fX, offset_.fY));
-    TryToPrepareRasterCache(context, container, child_matrix);
+    if (!context->has_platform_view && context->raster_cache &&
+        SkRect::Intersects(context->cull_rect, paint_bounds())) {
+      SkMatrix ctm = child_matrix;
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+      ctm = RasterCache::GetIntegralTransCTM(ctm);
+#endif
+      context->raster_cache->Prepare(context, container, ctm);
+    }
   }
 }
 
@@ -62,6 +69,11 @@
   SkAutoCanvasRestore save(context.internal_nodes_canvas, true);
   context.internal_nodes_canvas->translate(offset_.fX, offset_.fY);
 
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  context.internal_nodes_canvas->setMatrix(RasterCache::GetIntegralTransCTM(
+      context.leaf_nodes_canvas->getTotalMatrix()));
+#endif
+
   if (context.raster_cache &&
       context.raster_cache->Draw(GetChildContainer(),
                                  *context.leaf_nodes_canvas, &paint)) {
@@ -71,7 +83,8 @@
   // Skia may clip the content with saveLayerBounds (although it's not a
   // guaranteed clip). So we have to provide a big enough saveLayerBounds. To do
   // so, we first remove the offset from paint bounds since it's already in the
-  // matrix. Then we round out the bounds.
+  // matrix. Then we round out the bounds because of our
+  // RasterCache::GetIntegralTransCTM optimization.
   //
   // Note that the following lines are only accessible when the raster cache is
   // not available (e.g., when we're using the software backend in golden
diff --git a/flow/layers/opacity_layer_unittests.cc b/flow/layers/opacity_layer_unittests.cc
index ae08109..f7cc77f 100644
--- a/flow/layers/opacity_layer_unittests.cc
+++ b/flow/layers/opacity_layer_unittests.cc
@@ -58,6 +58,10 @@
   const SkMatrix initial_transform = SkMatrix::MakeTrans(0.5f, 0.5f);
   const SkMatrix layer_transform =
       SkMatrix::MakeTrans(layer_offset.fX, layer_offset.fY);
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM(
+      SkMatrix::Concat(initial_transform, layer_transform));
+#endif
   const SkPaint child_paint = SkPaint(SkColors::kGreen);
   const SkRect expected_layer_bounds =
       layer_transform.mapRect(child_path.getBounds());
@@ -82,6 +86,10 @@
   auto expected_draw_calls = std::vector(
       {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
        MockCanvas::DrawCall{1, MockCanvas::ConcatMatrixData{layer_transform}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           1, MockCanvas::SetMatrixData{integral_layer_transform}},
+#endif
        MockCanvas::DrawCall{
            1, MockCanvas::SaveLayerData{opacity_bounds, opacity_paint, nullptr,
                                         2}},
@@ -99,6 +107,10 @@
   const SkMatrix initial_transform = SkMatrix::MakeTrans(0.5f, 0.5f);
   const SkMatrix layer_transform =
       SkMatrix::MakeTrans(layer_offset.fX, layer_offset.fY);
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM(
+      SkMatrix::Concat(initial_transform, layer_transform));
+#endif
   const SkPaint child_paint = SkPaint(SkColors::kGreen);
   const SkRect expected_layer_bounds =
       layer_transform.mapRect(child_path.getBounds());
@@ -121,6 +133,10 @@
   auto expected_draw_calls = std::vector(
       {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
        MockCanvas::DrawCall{1, MockCanvas::ConcatMatrixData{layer_transform}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           1, MockCanvas::SetMatrixData{integral_layer_transform}},
+#endif
        MockCanvas::DrawCall{1, MockCanvas::SaveData{2}},
        MockCanvas::DrawCall{
            2, MockCanvas::ClipRectData{kEmptyRect, SkClipOp::kIntersect,
@@ -139,6 +155,10 @@
   const SkMatrix initial_transform = SkMatrix::MakeTrans(0.5f, 0.5f);
   const SkMatrix layer_transform =
       SkMatrix::MakeTrans(layer_offset.fX, layer_offset.fY);
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM(
+      SkMatrix::Concat(initial_transform, layer_transform));
+#endif
   const SkPaint child_paint = SkPaint(SkColors::kGreen);
   const SkRect expected_layer_bounds =
       layer_transform.mapRect(child_path.getBounds());
@@ -165,6 +185,10 @@
   auto expected_draw_calls = std::vector(
       {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
        MockCanvas::DrawCall{1, MockCanvas::ConcatMatrixData{layer_transform}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           1, MockCanvas::SetMatrixData{integral_layer_transform}},
+#endif
        MockCanvas::DrawCall{
            1, MockCanvas::SaveLayerData{opacity_bounds, opacity_paint, nullptr,
                                         2}},
@@ -187,6 +211,13 @@
       SkMatrix::MakeTrans(layer1_offset.fX, layer1_offset.fY);
   const SkMatrix layer2_transform =
       SkMatrix::MakeTrans(layer2_offset.fX, layer2_offset.fY);
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  const SkMatrix integral_layer1_transform = RasterCache::GetIntegralTransCTM(
+      SkMatrix::Concat(initial_transform, layer1_transform));
+  const SkMatrix integral_layer2_transform = RasterCache::GetIntegralTransCTM(
+      SkMatrix::Concat(SkMatrix::Concat(initial_transform, layer1_transform),
+                       layer2_transform));
+#endif
   const SkPaint child1_paint = SkPaint(SkColors::kRed);
   const SkPaint child2_paint = SkPaint(SkColors::kBlue);
   const SkPaint child3_paint = SkPaint(SkColors::kGreen);
@@ -247,6 +278,10 @@
   auto expected_draw_calls = std::vector(
       {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
        MockCanvas::DrawCall{1, MockCanvas::ConcatMatrixData{layer1_transform}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           1, MockCanvas::SetMatrixData{integral_layer1_transform}},
+#endif
        MockCanvas::DrawCall{
            1, MockCanvas::SaveLayerData{opacity1_bounds, opacity1_paint,
                                         nullptr, 2}},
@@ -254,6 +289,10 @@
            2, MockCanvas::DrawPathData{child1_path, child1_paint}},
        MockCanvas::DrawCall{2, MockCanvas::SaveData{3}},
        MockCanvas::DrawCall{3, MockCanvas::ConcatMatrixData{layer2_transform}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           3, MockCanvas::SetMatrixData{integral_layer2_transform}},
+#endif
        MockCanvas::DrawCall{
            3, MockCanvas::SaveLayerData{opacity2_bounds, opacity2_paint,
                                         nullptr, 4}},
diff --git a/flow/layers/picture_layer.cc b/flow/layers/picture_layer.cc
index 58e356b..c60b092 100644
--- a/flow/layers/picture_layer.cc
+++ b/flow/layers/picture_layer.cc
@@ -24,7 +24,12 @@
   if (auto* cache = context->raster_cache) {
     TRACE_EVENT0("flutter", "PictureLayer::RasterCache (Preroll)");
 
-    cache->Prepare(context->gr_context, sk_picture, matrix,
+    SkMatrix ctm = matrix;
+    ctm.postTranslate(offset_.x(), offset_.y());
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+    ctm = RasterCache::GetIntegralTransCTM(ctm);
+#endif
+    cache->Prepare(context->gr_context, sk_picture, ctm,
                    context->dst_color_space, is_complex_, will_change_);
   }
 
@@ -39,6 +44,10 @@
 
   SkAutoCanvasRestore save(context.leaf_nodes_canvas, true);
   context.leaf_nodes_canvas->translate(offset_.x(), offset_.y());
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  context.leaf_nodes_canvas->setMatrix(RasterCache::GetIntegralTransCTM(
+      context.leaf_nodes_canvas->getTotalMatrix()));
+#endif
 
   if (context.raster_cache &&
       context.raster_cache->Draw(*picture(), *context.leaf_nodes_canvas)) {
diff --git a/flow/layers/picture_layer_unittests.cc b/flow/layers/picture_layer_unittests.cc
index 0cdb2f9..4f565cf 100644
--- a/flow/layers/picture_layer_unittests.cc
+++ b/flow/layers/picture_layer_unittests.cc
@@ -11,6 +11,10 @@
 #include "flutter/testing/mock_canvas.h"
 #include "third_party/skia/include/core/SkPicture.h"
 
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+#include "flutter/flow/raster_cache.h"
+#endif
+
 namespace flutter {
 namespace testing {
 
@@ -81,11 +85,16 @@
   EXPECT_FALSE(layer->needs_system_composite());
 
   layer->Paint(paint_context());
-  auto expected_draw_calls =
-      std::vector({MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
-                   MockCanvas::DrawCall{
-                       1, MockCanvas::ConcatMatrixData{layer_offset_matrix}},
-                   MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}}});
+  auto expected_draw_calls = std::vector(
+      {MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
+       MockCanvas::DrawCall{1,
+                            MockCanvas::ConcatMatrixData{layer_offset_matrix}},
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+       MockCanvas::DrawCall{
+           1, MockCanvas::SetMatrixData{RasterCache::GetIntegralTransCTM(
+                  layer_offset_matrix)}},
+#endif
+       MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}}});
   EXPECT_EQ(mock_canvas().draw_calls(), expected_draw_calls);
 }
 
diff --git a/flow/raster_cache.h b/flow/raster_cache.h
index 1332d89..3f7f659 100644
--- a/flow/raster_cache.h
+++ b/flow/raster_cache.h
@@ -62,6 +62,13 @@
     return bounds;
   }
 
+  static SkMatrix GetIntegralTransCTM(const SkMatrix& ctm) {
+    SkMatrix result = ctm;
+    result[SkMatrix::kMTransX] = SkScalarRoundToScalar(ctm.getTranslateX());
+    result[SkMatrix::kMTransY] = SkScalarRoundToScalar(ctm.getTranslateY());
+    return result;
+  }
+
   // Return true if the cache is generated.
   //
   // We may return false and not generate the cache if
diff --git a/flow/raster_cache_key.h b/flow/raster_cache_key.h
index f5fd1e0..5eae4d3 100644
--- a/flow/raster_cache_key.h
+++ b/flow/raster_cache_key.h
@@ -15,8 +15,11 @@
 class RasterCacheKey {
  public:
   RasterCacheKey(ID id, const SkMatrix& ctm) : id_(id), matrix_(ctm) {
-    matrix_[SkMatrix::kMTransX] = 0;
-    matrix_[SkMatrix::kMTransY] = 0;
+    matrix_[SkMatrix::kMTransX] = SkScalarFraction(ctm.getTranslateX());
+    matrix_[SkMatrix::kMTransY] = SkScalarFraction(ctm.getTranslateY());
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+    FML_DCHECK(matrix_.getTranslateX() == 0 && matrix_.getTranslateY() == 0);
+#endif
   }
 
   ID id() const { return id_; }
diff --git a/flow/raster_cache_unittests.cc b/flow/raster_cache_unittests.cc
index ab466a1..3df335f 100644
--- a/flow/raster_cache_unittests.cc
+++ b/flow/raster_cache_unittests.cc
@@ -159,6 +159,9 @@
   ASSERT_TRUE(cache.Draw(*picture, canvas));
 
   canvas.translate(248, 0);
+#ifndef SUPPORT_FRACTIONAL_TRANSLATION
+  canvas.setMatrix(RasterCache::GetIntegralTransCTM(canvas.getTotalMatrix()));
+#endif
   ASSERT_TRUE(cache.Draw(*picture, canvas));
 }
 
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone 8_simulator.png
index 05eff90..d2b811f 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone 8_simulator.png
index b193419..fbdac68 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_simulator.png
index ac6a65f..0e00df7 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_simulator.png
index f881d8c..5c599bd 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_simulator.png
index fd64f97..35cc6db 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_simulator.png
index 722fc95..f97a8f6 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_simulator.png
index 6c4a209..fd25dc0 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_simulator.png
Binary files differ
diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_simulator.png
index 38ed217..0db030e 100644
--- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_simulator.png
+++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_simulator.png
Binary files differ