diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 0d53b44b70d31..06e73d1538d71 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -66,9 +66,15 @@ - (void)layoutSubviews { #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