diff --git a/src/art/artJS.js b/src/art/artJS.js
index c5ffbcbe01a1532bf67b4cc16d8d75da3348edac..9ac36f8df0e7ae8959ba94fd979ffb03d91a48cb 100644
--- a/src/art/artJS.js
+++ b/src/art/artJS.js
@@ -273,24 +273,28 @@ App.Art.webglArtElement = function(slave, artSize) {
 	let container = document.createElement("div");
 	container.setAttribute("class", "artContainer");
 	container.style.fontSize = "large";
-	container.innerText = "Loading...";
+	// container.innerText = "Loading...";
 
 	container.addEventListener("engineLoaded", function() {
-		// when engine is ready, attach default scene
-		let scene = JSON.parse(JSON.stringify(App.Art.defaultScene));
+		let img = document.createElement("img"); // hack to simulate onload event
+		img.onerror = function() {
+			// when engine is ready, attach default scene
+			let scene = JSON.parse(JSON.stringify(App.Art.defaultScene));
 
-		// apply the model transforms
-		let p = App.Art.getArtParams(slave);
-		App.Art.applyFigures(slave, scene, p);
-		App.Art.applySurfaces(slave, scene, p);
-		App.Art.applyMaterials(slave, scene, p);
-		App.Art.applyMorphs(slave, scene, p);
+			// apply the model transforms
+			let p = App.Art.getArtParams(slave);
+			App.Art.applyFigures(slave, scene, p);
+			App.Art.applySurfaces(slave, scene, p);
+			App.Art.applyMaterials(slave, scene, p);
+			App.Art.applyMorphs(slave, scene, p);
 
-		// console.log(scene);
+			// console.log(scene);
 
-		// create UI and render based on active view
-		container.innerText = "";
-		App.Art.createWebglUI(container, slave, artSize, scene, p);
+			// create UI and render based on active view
+			container.innerText = "";
+			App.Art.createWebglUI(container, slave, artSize, scene, p);
+		};
+		img.src = '';
 	});
 
 	container.addEventListener("engineFailed", function() {