diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
index 87425f3656..19fa79440b 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
@@ -604,10 +604,13 @@ DOM::ExceptionOr check_usability_of_image(CanvasImag
// HTMLOrSVGImageElement
[](HTMLImageElement const& image_element) -> DOM::ExceptionOr> {
// FIXME: If image's current request's state is broken, then throw an "InvalidStateError" DOMException.
- // FIXME: If image is not fully decodable, then return bad.
+
+ // If image is not fully decodable, then return bad.
+ if (!image_element.bitmap())
+ return { CanvasImageSourceUsability::Bad };
// If image has an intrinsic width or intrinsic height (or both) equal to zero, then return bad.
- if (image_element.width() == 0 || image_element.height() == 0)
+ if (image_element.bitmap()->width() == 0 || image_element.bitmap()->height() == 0)
return { CanvasImageSourceUsability::Bad };
return Optional {};
},