diff --git a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp
index 5b654c1fc2..35a83b0c87 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp
@@ -101,6 +101,11 @@ unsigned HTMLImageElement::width() const
if (auto* paint_box = this->paint_box())
return paint_box->content_width();
+ // NOTE: This step seems to not be in the spec, but all browsers do it.
+ auto width_attr = get_attribute(HTML::AttributeNames::width);
+ if (auto converted = width_attr.to_uint(); converted.has_value())
+ return *converted;
+
// ...or else the density-corrected intrinsic width and height of the image, in CSS pixels,
// if the image has intrinsic dimensions and is available but not being rendered.
if (m_image_loader.has_image())
@@ -124,6 +129,11 @@ unsigned HTMLImageElement::height() const
if (auto* paint_box = this->paint_box())
return paint_box->content_height();
+ // NOTE: This step seems to not be in the spec, but all browsers do it.
+ auto height_attr = get_attribute(HTML::AttributeNames::height);
+ if (auto converted = height_attr.to_uint(); converted.has_value())
+ return *converted;
+
// ...or else the density-corrected intrinsic height and height of the image, in CSS pixels,
// if the image has intrinsic dimensions and is available but not being rendered.
if (m_image_loader.has_image())