diff --git a/src/mac/carbon/dcclient.cpp b/src/mac/carbon/dcclient.cpp index 4c2c1a8b9f..0bd172fa84 100644 --- a/src/mac/carbon/dcclient.cpp +++ b/src/mac/carbon/dcclient.cpp @@ -121,33 +121,20 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const int width = subrect != NULL ? subrect->width : (int)rect.size.width; int height = subrect != NULL ? subrect->height : (int)rect.size.height ; - bytesPerRow = ( ( width * 8 * 4 + 7 ) / 8 ); - - data = calloc( 1, bytesPerRow * height ); - context = CGBitmapContextCreate( data, width, height, 8, bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst ); + wxBitmap bmp = wxBitmap(width, height, 32); + + context = (CGContextRef)bmp.GetHBITMAP(); + + CGContextSaveGState(context); + + CGContextTranslateCTM( context, 0, height ); + CGContextScaleCTM( context, 1, -1 ); if ( subrect ) rect = CGRectOffset( rect, -subrect->x, -subrect->y ) ; CGContextDrawImage( context, rect, image ); - unsigned char* buffer = (unsigned char*) data; - wxBitmap bmp = wxBitmap(width, height, 32); - wxAlphaPixelData pixData(bmp, wxPoint(0,0), wxSize(width, height)); - - wxAlphaPixelData::Iterator p(pixData); - for (int y=0; y