diff --git a/game.js b/game.js
index 616e5f0..49f2da6 100644
--- a/game.js
+++ b/game.js
@@ -71,6 +71,7 @@ window.addEventListener("load", async () => {
           setTextAlign: (ctx, align) => ctx.textAlign = align,
           clearRect: (ctx, x, y, w, h) => ctx.clearRect(x, y, w, h),
           fillRect: (ctx, x, y, w, h) => ctx.fillRect(x, y, w, h),
+          strokeRect: (ctx, x, y, w, h) => ctx.strokeRect(x, y, w, h),
           fillText: (ctx, text, x, y) => ctx.fillText(text, x, y),
           drawImage: (ctx, image, sx, sy, sw, sh, dx, dy, dw, dh) => ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh),
           restore: (ctx) => ctx.restore(),
diff --git a/modules/dom/canvas.scm b/modules/dom/canvas.scm
index 15d5283..08bdf07 100644
--- a/modules/dom/canvas.scm
+++ b/modules/dom/canvas.scm
@@ -63,6 +63,9 @@
 (define-foreign fill-rect
   "canvas" "fillRect"
   (ref extern) f64 f64 f64 f64 -> none)
+(define-foreign stroke-rect
+  "canvas" "strokeRect"
+  (ref extern) f64 f64 f64 f64 -> none)
 (define-foreign fill-text
   "canvas" "fillText"
   (ref extern) (ref string) f64 f64 -> none)