diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 5b115bab0299c7ffae87da1d6897f42cf2788e4e..5246396fad1fcbb6277ed292185c2fcfe3cd61f0 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -4915,8 +4915,6 @@ public class GTURTLEModeling {
                     if (adn.getNodeType() == Node.ELEMENT_NODE) {
                         elt = (Element) adn;
 
-                        if (asmdp == null) { throw new MalformedModelingException(); }
-
                         decX = (int)(_decX - X + X / zoomRatio);
                         decY = (int)(_decY - Y  + Y / zoomRatio);
 
diff --git a/src/main/java/ui/ScalableTGComponent.java b/src/main/java/ui/ScalableTGComponent.java
index a3f73b8842826216613039df59e22ddec4ac498b..7c80b527635a9bf2ad64387747df471f82375cf4 100644
--- a/src/main/java/ui/ScalableTGComponent.java
+++ b/src/main/java/ui/ScalableTGComponent.java
@@ -48,4 +48,5 @@ package ui;
 public interface ScalableTGComponent {
     
 	void rescale(double scaleFactor);
+	void basicRescale(double scaleFactor);
 }
\ No newline at end of file
diff --git a/src/main/java/ui/TGScalableComponent.java b/src/main/java/ui/TGScalableComponent.java
index 97c2ebc8a4e198580447c0711c095473623c0167..01c1b8d333947a391048582a840e023899bace08 100644
--- a/src/main/java/ui/TGScalableComponent.java
+++ b/src/main/java/ui/TGScalableComponent.java
@@ -246,7 +246,7 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl
                 TGScalableComponent sc = (TGScalableComponent)tgc;
                 double oldFactor = sc.getOldScaleFactor();
                 //TraceManager.addDev("Handling component:" + sc);
-                sc.rescale(zoomRatio * oldFactor);
+                sc.basicRescale(zoomRatio * oldFactor);
                 sc.forceOldScaleFactor(sc.getTDiagramPanel().getZoom());
             }
         }
@@ -386,6 +386,63 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl
         maxY *= factor;
     }
 
+    public void basicForceScale(final double factor) {
+        dwidth = (width + dwidth) * factor;
+        dheight = (height + dheight) * factor;
+        dx = (dx + x) * factor;
+        dy = (dy + y) * factor;
+        dMinWidth = (minWidth + dMinWidth) * factor;
+        dMinHeight = (minHeight + dMinHeight) * factor;//oldScaleFactor * scaleFactor;
+        dMaxWidth = (maxWidth + dMaxWidth) * factor;//oldScaleFactor * scaleFactor;
+        dMaxHeight = (maxHeight + dMaxHeight) * factor;//oldScaleFactor * scaleFactor;
+
+        width = (int)(dwidth);
+        dwidth = dwidth - width;
+        height = (int)(dheight);
+        dheight = dheight - height;
+        minWidth = (int)(dMinWidth);
+        minHeight = (int)(dMinHeight);
+        maxWidth = (int)(dMaxWidth);
+        maxHeight = (int)(dMaxHeight);
+
+        dMinWidth = dMinWidth - minWidth;
+        dMinHeight = dMinHeight - minHeight;
+        dMaxWidth = dMaxWidth - maxWidth;
+        dMaxHeight = dMaxHeight - maxHeight;
+        x = (int)(dx);
+        dx = dx - x;
+        y = (int)(dy);
+        dy = dy - y;
+
+        /*double basicFactor = getTDiagramPanel().getZoom();
+        TraceManager.addDev("Found zoom:" + basicFactor + " textY=" + textY);
+
+        textX = (int)(textX * basicFactor);
+        textY = (int)(textY * basicFactor);*/
+
+
+
+        /*dtextY = (textY + dtextY) * factor;
+        textY = (int) (dtextY);
+        dtextY = dtextY - textY;
+
+        darc = (arc + darc) * factor;
+        arc = (int) (darc);
+        darc = darc - arc;
+
+        dLineLength = (lineLength + dLineLength) * factor;
+        lineLength = (int) dLineLength;
+        dLineLength = dLineLength - lineLength;
+
+        dLinebreak = (linebreak + dLinebreak) * factor;
+        linebreak = (int) dLinebreak;
+        dLinebreak = dLinebreak - linebreak;*/
+
+        // Issue #81: We also need to update max coordinate values
+        maxX *= factor;
+        maxY *= factor;
+    }
+
     @Override
     public void rescale( final double scaleFactor ) {
         rescaled = true;
@@ -418,6 +475,38 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl
         hasBeenResized();
     }
 
+
+    public void basicRescale( final double scaleFactor ) {
+        rescaled = true;
+
+        final double factor = scaleFactor / oldScaleFactor;
+        basicForceScale(factor);
+
+        oldScaleFactor = scaleFactor;
+
+        if (father != null) {
+            // Must rescale my zone...
+            resizeWithFather();
+        } else {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+        }
+
+        setMoveCd(x, y, true);
+
+        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
+
+        for(int i=0; i<nbInternalTGComponent; i++) {
+            if (tgcomponent[i] instanceof ScalableTGComponent) {
+                ((ScalableTGComponent)tgcomponent[i]).basicRescale(scaleFactor);
+            }
+        }
+
+        hasBeenResized();
+    }
+
     /**
      * Issue #31
      * @return
diff --git a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
index 61fa93cd7269336e390111760a88cee64f1df600..526984e3b615b8081b610cd4b4a24b66202e8db1 100644
--- a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
+++ b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
@@ -125,6 +125,8 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicCanBeDisabledComponent /*
 
 		Color c = g.getColor();
 
+        TraceManager.addDev("TextY=" + textY + " for value=" + value);
+
 
         if (stateOfError > 0)  {
             switch(stateOfError) {