diff --git a/src/Avalonia.Native.OSX/window.mm b/src/Avalonia.Native.OSX/window.mm index 6104ac1f28..57dbec10e9 100644 --- a/src/Avalonia.Native.OSX/window.mm +++ b/src/Avalonia.Native.OSX/window.mm @@ -243,10 +243,11 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent - (void) drawFb: (AvnFramebuffer*) fb { auto colorSpace = CGColorSpaceCreateDeviceRGB(); - auto bctx = CGBitmapContextCreate(fb->Data, fb->Width, fb->Height, 8, fb->Stride, colorSpace, kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast); - auto image = CGBitmapContextCreateImage(bctx); - CGContextRelease(bctx); - CGColorSpaceRelease(colorSpace); + auto dataProvider = CGDataProviderCreateWithData(NULL, fb->Data, fb->Height*fb->Stride, NULL); + + + auto image = CGImageCreate(fb->Width, fb->Height, 8, 32, fb->Stride, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast, + dataProvider, nullptr, false, kCGRenderingIntentDefault); auto ctx = [NSGraphicsContext currentContext]; @@ -255,6 +256,8 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent CGContextDrawImage(cgc, CGRect{0,0, fb->Width/(fb->Dpi.X/96), fb->Height/(fb->Dpi.Y/96)}, image); CGImageRelease(image); + CGColorSpaceRelease(colorSpace); + CGDataProviderRelease(dataProvider); [ctx restoreGraphicsState];