diff --git a/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod b/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
index edcc293c0fdec933ff2b82e58215e90c60bf2c3d..bed96479944463039a56953c1090dcac7249c181 100644
--- a/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
+++ b/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
@@ -910,7 +910,8 @@ class Display
     if(fonts[name]) return fonts[name];
     object req = OpenFont_req(name);
     send_request(req);
-    return Types.Font(this_object(), req->fid);
+    fonts[name] = Types.Font(this_object(), req->fid);
+    return fonts[name];
   }
 
   object CreateGlyphCursor_req(object sourcefont, object maskfont,