diff --git a/mozilla/modules/libpr0n/decoders/png/nsPNGDecoder.cpp b/mozilla/modules/libpr0n/decoders/png/nsPNGDecoder.cpp index f7d91994676..fb636ac5d53 100644 --- a/mozilla/modules/libpr0n/decoders/png/nsPNGDecoder.cpp +++ b/mozilla/modules/libpr0n/decoders/png/nsPNGDecoder.cpp @@ -347,7 +347,7 @@ nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) format = nsIGFXFormat::RGB; } else if (channels > 3) { if (alpha_bits == 8) { - format = nsIGFXFormat::RGB_A8; + decoder->mImage->GetPreferredAlphaChannelFormat(&format); } else if (alpha_bits == 1) { format = nsIGFXFormat::RGB_A1; } @@ -484,6 +484,10 @@ nsPNGDecoder::row_callback(png_structp png_ptr, png_bytep new_row, decoder->mFrame->SetAlphaData(decoder->alphaLine, abpr, row_num*abpr); } break; + case nsIGFXFormat::RGBA: + case nsIGFXFormat::BGRA: + decoder->mFrame->SetImageData(line, bpr, row_num*bpr); + break; } nsRect r(0, row_num, width, 1);