diff --git a/src/components/gltf-model-plus.js b/src/components/gltf-model-plus.js
index a9cef5ae4ae2352e3909a741f954f82126276998..bc8d90bc22d4555de5e4ab2b6555b6381c6e6d96 100644
--- a/src/components/gltf-model-plus.js
+++ b/src/components/gltf-model-plus.js
@@ -266,10 +266,10 @@ AFRAME.registerComponent("gltf-model-plus", {
       this.model = model.scene || model.scenes[0];
       this.model.animations = model.animations;
 
-      this.el.setObject3D("mesh", this.model);
+      let object3DToSet = this.model;
       if (this.data.inflate && (this.inflatedEl = inflateEntities(this.model, this.templates, gltfPath))) {
         this.el.appendChild(this.inflatedEl);
-        this.el.setObject3D("mesh", this.inflatedEl.object3D);
+        object3DToSet = this.inflatedEl.object3D;
         // TODO: Still don't fully understand the lifecycle here and how it differs between browsers, we should dig in more
         // Wait one tick for the appended custom elements to be connected before attaching templates
         await nextTick();
@@ -278,6 +278,7 @@ AFRAME.registerComponent("gltf-model-plus", {
           attachTemplate(this.el, name, this.templates[name]);
         }
       }
+      this.el.setObject3D("mesh", object3DToSet);
       this.el.emit("model-loaded", { format: "gltf", model: this.model });
     } catch (e) {
       console.error("Failed to load glTF model", e, this);
diff --git a/src/components/media-loader.js b/src/components/media-loader.js
index b2d5a7f2dc72f1f0fc2f439fd00813ff02d29301..49090837fc2200ec8e0acdf32f49454f26aa2763 100644
--- a/src/components/media-loader.js
+++ b/src/components/media-loader.js
@@ -63,6 +63,14 @@ AFRAME.registerComponent("media-loader", {
 
       const contentType = (meta && meta.expected_content_type) || (await fetchContentType(raw));
       if (contentType.startsWith("image/") || contentType.startsWith("video/")) {
+        this.el.addEventListener(
+          "image-loaded",
+          () => {
+            console.log("clearing timeout");
+            clearTimeout(this.showLoaderTimeout);
+          },
+          { once: true }
+        );
         this.el.setAttribute("image-plus", { src: raw, contentType });
       } else if (contentType.startsWith("model/gltf") || url.endsWith(".gltf") || url.endsWith(".glb")) {
         this.el.addEventListener(