| Index: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp | 
| diff --git a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp | 
| index b954a982e6fbc2decfe0c22117ab6573de011dc8..767f132341f36b4cdf99117e4836bde489b8d19e 100644 | 
| --- a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp | 
| +++ b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp | 
| @@ -159,7 +159,6 @@ bool GIFImageDecoder::HaveDecodedRow(size_t frame_index, | 
| *current_address = color_table_iter[source_value]; | 
| } else { | 
| *current_address = 0; | 
| -        current_buffer_saw_alpha_ = true; | 
| } | 
| } | 
| } else { | 
| @@ -168,8 +167,6 @@ bool GIFImageDecoder::HaveDecodedRow(size_t frame_index, | 
| if ((source_value != transparent_pixel) && | 
| (source_value < color_table.size())) | 
| *current_address = color_table_iter[source_value]; | 
| -      else | 
| -        current_buffer_saw_alpha_ = true; | 
| } | 
| } | 
|  | 
| @@ -191,10 +188,17 @@ bool GIFImageDecoder::FrameComplete(size_t frame_index) { | 
| if (!InitFrameBuffer(frame_index)) | 
| return SetFailed(); | 
|  | 
| -  if (!current_buffer_saw_alpha_) | 
| -    CorrectAlphaWhenFrameBufferSawNoAlpha(frame_index); | 
| +  ImageFrame& buffer = frame_buffer_cache_[frame_index]; | 
| + | 
| +  const GIFFrameContext* frame_context = reader_->FrameContext(frame_index); | 
| +  const size_t transparent_pixel = frame_context->TransparentPixel(); | 
| +  const GIFColorMap::Table& color_table = | 
| +      frame_context->LocalColorMap().IsDefined() | 
| +          ? frame_context->LocalColorMap().GetTable() | 
| +          : reader_->GlobalColorMap().GetTable(); | 
| +  buffer.SetHasAlpha(transparent_pixel <= color_table.size()); | 
|  | 
| -  frame_buffer_cache_[frame_index].SetStatus(ImageFrame::kFrameComplete); | 
| +  buffer.SetStatus(ImageFrame::kFrameComplete); | 
|  | 
| return true; | 
| } | 
| @@ -269,10 +273,6 @@ void GIFImageDecoder::Parse(GIFParseQuery query) { | 
| SetFailed(); | 
| } | 
|  | 
| -void GIFImageDecoder::OnInitFrameBuffer(size_t frame_index) { | 
| -  current_buffer_saw_alpha_ = false; | 
| -} | 
| - | 
| bool GIFImageDecoder::CanReusePreviousFrameBuffer(size_t frame_index) const { | 
| DCHECK(frame_index < frame_buffer_cache_.size()); | 
| return frame_buffer_cache_[frame_index].GetDisposalMethod() != | 
|  |