diff --git a/Userland/Libraries/LibGfx/ImageFormats/GIFLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/GIFLoader.cpp index 5ffacd515d..c05e41e730 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/GIFLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/GIFLoader.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include namespace Gfx { @@ -159,7 +160,8 @@ static ErrorOr decode_frame(GIFLoadingContext& context, size_t frame_index auto const previous_image_disposal_method = i > 0 ? context.images.at(i - 1)->disposal_method : GIFImageDescriptor::DisposalMethod::None; if (i == 0) { - context.frame_buffer->fill(Color::Transparent); + auto painter = Gfx::Painter::create(*context.frame_buffer); + painter->clear_rect(context.frame_buffer->rect().to_type(), Color::Transparent); } else if (i > 0 && image->disposal_method == GIFImageDescriptor::DisposalMethod::RestorePrevious && previous_image_disposal_method != GIFImageDescriptor::DisposalMethod::RestorePrevious) { // This marks the start of a run of frames that once disposed should be restored to the diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp index 17470ee4c9..50efb1af8a 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp @@ -385,8 +385,9 @@ void CanvasRenderingContext2D::reset_to_default_state() auto* bitmap = canvas_element().bitmap(); // 1. Clear canvas's bitmap to transparent black. - if (bitmap) - bitmap->fill(Gfx::Color::Transparent); + if (bitmap) { + painter()->clear_rect(bitmap->rect().to_type(), Color::Transparent); + } // 2. Empty the list of subpaths in context's current default path. path().clear();