diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
index 95718a73be..15302c1230 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
@@ -719,6 +719,13 @@ void CanvasRenderingContext2D::set_transform(double a, double b, double c, doubl
transform(a, b, c, d, e, f);
}
+// https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-resettransform
+void CanvasRenderingContext2D::reset_transform()
+{
+ // The resetTransform() method, when invoked, must reset the current transformation matrix to the identity matrix.
+ m_drawing_state.transform = {};
+}
+
// https://html.spec.whatwg.org/multipage/canvas.html#check-the-usability-of-the-image-argument
DOM::ExceptionOr check_usability_of_image(CanvasImageSource const& image)
{
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
index f00eca01c2..b86ee07ef0 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
@@ -100,6 +100,7 @@ public:
void transform(double a, double b, double c, double d, double e, double f);
void set_transform(double a, double b, double c, double d, double e, double f);
+ void reset_transform();
private:
explicit CanvasRenderingContext2D(HTMLCanvasElement&);
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
index 36cebe7f05..6806b05658 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
@@ -58,5 +58,6 @@ interface CanvasRenderingContext2D {
// FIXME: All these `double`s should be `unrestricted double`
undefined transform(double a, double b, double c, double d, double e, double f);
undefined setTransform(double a, double b, double c, double d, double e, double f);
+ undefined resetTransform();
};