diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m index edeca11a57..5013d23c74 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -253,7 +253,6 @@ NSImage *Cocoa_CreateImage(SDL_Surface *surface) SDL_Surface *converted; NSBitmapImageRep *imgrep; Uint8 *pixels; - int i; NSImage *img; converted = SDL_ConvertSurface(surface, SDL_PIXELFORMAT_RGBA32); @@ -261,6 +260,9 @@ NSImage *Cocoa_CreateImage(SDL_Surface *surface) return nil; } + /* Premultiply the alpha channel */ + SDL_PremultiplySurfaceAlpha(converted, SDL_FALSE); + imgrep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:converted->w pixelsHigh:converted->h @@ -281,15 +283,6 @@ NSImage *Cocoa_CreateImage(SDL_Surface *surface) SDL_memcpy(pixels, converted->pixels, (size_t)converted->h * converted->pitch); SDL_DestroySurface(converted); - /* Premultiply the alpha channel */ - for (i = (surface->h * surface->w); i--;) { - Uint8 alpha = pixels[3]; - pixels[0] = (Uint8)(((Uint16)pixels[0] * alpha) / 255); - pixels[1] = (Uint8)(((Uint16)pixels[1] * alpha) / 255); - pixels[2] = (Uint8)(((Uint16)pixels[2] * alpha) / 255); - pixels += 4; - } - img = [[NSImage alloc] initWithSize:NSMakeSize(surface->w, surface->h)]; if (img != nil) { [img addRepresentation:imgrep];