diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 0d53b44b70d..06e73d1538d 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -66,9 +66,15 @@ id _delegate; #if FLUTTER_SHELL_ENABLE_METAL if ([self.layer isKindOfClass:[CAMetalLayer class]]) { - CGFloat screenScale = [UIScreen mainScreen].scale; - self.layer.contentsScale = screenScale; - self.layer.rasterizationScale = screenScale; + const CGFloat screenScale = [UIScreen mainScreen].scale; + + auto metal_layer = reinterpret_cast(self.layer); + metal_layer.contentsScale = screenScale; + metal_layer.rasterizationScale = screenScale; + + const auto layer_size = self.bounds.size; + metal_layer.drawableSize = + CGSizeMake(layer_size.width * screenScale, layer_size.height * screenScale); } #endif // FLUTTER_SHELL_ENABLE_METAL