| Index: src/codec/SkBmpStandardCodec.cpp | 
| diff --git a/src/codec/SkBmpStandardCodec.cpp b/src/codec/SkBmpStandardCodec.cpp | 
| index 358da057c6e8a22ceea8dd9370e6b5da4982f961..651ff83b8a6450712219d41f43cba712698ad480 100644 | 
| --- a/src/codec/SkBmpStandardCodec.cpp | 
| +++ b/src/codec/SkBmpStandardCodec.cpp | 
| @@ -150,13 +150,18 @@ SkCodec::Result SkBmpStandardCodec::onGetPixels(const SkImageInfo& dstInfo, | 
| } | 
|  | 
| void SkBmpStandardCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Options& opts) { | 
| -    // In the case of paletted ico-in-bmps, we will report BGRA to the client, | 
| -    // since we may be required to apply an alpha mask after the decode.  But | 
| -    // the swizzler needs to know the actual format of the bmp. | 
| +    // In the case of bmp-in-icos, we will report BGRA to the client, | 
| +    // since we may be required to apply an alpha mask after the decode. | 
| +    // However, the swizzler needs to know the actual format of the bmp. | 
| SkEncodedInfo swizzlerInfo = this->getEncodedInfo(); | 
| -    if (fInIco && this->bitsPerPixel() <= 8) { | 
| -        swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kPalette_Color, swizzlerInfo.alpha(), | 
| -                this->bitsPerPixel()); | 
| +    if (fInIco) { | 
| +        if (this->bitsPerPixel() <= 8) { | 
| +            swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kPalette_Color, | 
| +                    swizzlerInfo.alpha(), this->bitsPerPixel()); | 
| +        } else if (this->bitsPerPixel() == 24) { | 
| +            swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kBGR_Color, | 
| +                    SkEncodedInfo::kOpaque_Alpha, 8); | 
| +        } | 
| } | 
|  | 
| // Get a pointer to the color table if it exists | 
|  |