diff --git a/javascript/src/Plugins/qfq.fabric.js b/javascript/src/Plugins/qfq.fabric.js
index 76dd5d4ac334d444d202fd6af8068a8a17ce2557..a41ca4f7c1385ba6895f70521bfd7580029c141a 100644
--- a/javascript/src/Plugins/qfq.fabric.js
+++ b/javascript/src/Plugins/qfq.fabric.js
@@ -297,6 +297,7 @@ $(function (n) {
         this.generateCanvas(width, height);
         if (this.outputField.val()) {
             this.canvas.loadFromJSON(this.outputField.val(), function() {
+                that.setBackground();
                 that.resizeCanvas();
                 that.setBrush();
                 that.canvas.renderAll();
@@ -375,7 +376,7 @@ $(function (n) {
         this.parentElement.append(canvas);
         this.canvas = this.__canvas = new fabric.StaticCanvas(canvas);
         this.parentElement.on("click", function(e) { that.toggleObjects(); });
-        $(window).resize(function() { that.scaled = false; that.resizeCanvas(); });
+        $(window).resize(function() { that.resizeCanvas(); });
     };
 
     n.Fabric.prototype.getMeta = function(url, callback) {
@@ -424,7 +425,7 @@ $(function (n) {
         window.addEventListener('keydown', function(e) { that.defaultKeyStrokeHandler(e) });
         window.addEventListener('dragend', function(e) { that.dragEndEvent(e) });
         this.parentElement.on('contextmenu', function(e) { that.defaultRightClickHandler(e) });
-        $(window).resize(function() { that.scaled=false; that.resizeCanvas(); });
+        $(window).resize(function() { that.resizeCanvas(); });
     };
 
     n.Fabric.prototype.dragEndEvent = function(e) {
@@ -439,8 +440,19 @@ $(function (n) {
         this.mouseInsideCanvas = true;
     };
 
+    /*
+    *
+    * Function is called at initialization and at each window resize.
+    * forceJSON is to tell resizeCanvas to ALWAYS use the JSON data as base
+    *           Used for static canvas initialization
+    * this.scaled - after the first call it sets scaled to true, which prevents
+    *               accidental wrong scaling when multiple resizeCanvas get started
+    *               in parallel. When scaled is true resize will only use real time
+    *               browser values and ignore database / json values.
+    *
+     */
     n.Fabric.prototype.resizeCanvas = function (forceJSON) {
-        console.log("resize canvas started 1111");
+        console.log("resize canvas started");
         var source = false;
         var backgroundSizing = false;
         var oldWidth = this.canvas.getWidth();
@@ -457,7 +469,8 @@ $(function (n) {
         if (source) {
             backgroundImageWidth = source.backgroundImage.width;
         }
-        if (oldWidth !== backgroundImageWidth && backgroundImageWidth !== 0) {
+        if (oldWidth !== backgroundImageWidth && backgroundImageWidth !== 0 && !this.scaled) {
+            console.log("Background Width: " + backgroundImageWidth);
             oldWidth = backgroundImageWidth;
             backgroundSizing = true;
         }
@@ -476,18 +489,16 @@ $(function (n) {
             this.canvas.setWidth(newWidth);
             this.canvas.setHeight(oldHeight * scaleMultiplier);
 
-
-            if (!this.scaled) {
-                var objects = this.canvas.getObjects();
-                for (var i in objects) {
+            var objects = this.canvas.getObjects();
+            for (var i in objects) {
                     objects[i].scaleX = objects[i].scaleX * scaleMultiplier;
                     objects[i].scaleY = objects[i].scaleY * scaleMultiplier;
                     objects[i].left = objects[i].left * scaleMultiplier;
                     objects[i].top = objects[i].top * scaleMultiplier;
                     objects[i].setCoords();
-                }
-                this.scaled = true;
+
             }
+            this.scaled=true;
             this.setBackground();
             this.canvas.renderAll();
         }