diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
index 9ce56ff8e5ca3ae1d5705190fe5a9eb8c2486670..ba0f9515784cfa691eaa2dce481d006b0114604d 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
@@ -3,7 +3,7 @@ CurvedLinkLayoutedContentAnchorangeController.java 6d2b64c3d6c813ac001b1500ed052
 EObjectDiagramController.java 2b253941592ee25ead95223470f983f23ef9776f GREEN
 EObjectEllipticResizableContentControllerBase.java 7c862a03b97d2f2cfdcc2fcee7434de2e1e257d2 GREEN
 EObjectModelChangeProvider.java f4b60cebb088a5c81ca92a41614e1a5d40030502 GREEN
-EObjectRectangularResizableContentControllerBase.java 28a17bf87f6a7222d927bc1c6b80967cb14b5f03 GREEN
+EObjectRectangularResizableContentControllerBase.java e73cda8f54318f8b785a208215d9e31eaa46eff7 GREEN
 KernelServiceBasedModelChangeProviderBase.java 8d1f8ef79ecd383ff74e5a2bbcf24345aabe70af GREEN
 LayoutModelChangeProvider.java b5449d02eaf39086909720c43e21bd061005fc9e GREEN
 LayoutedContentAnchorageController.java 9fc513a7404277514c730f7702d45588f2d81878 GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
index 28a17bf87f6a7222d927bc1c6b80967cb14b5f03..e73cda8f54318f8b785a208215d9e31eaa46eff7 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
@@ -19,6 +19,7 @@ import static org.fortiss.tooling.base.layout.DefaultLayoutConstants.DEFAULT_SHA
 import static org.fortiss.tooling.base.layout.DefaultLayoutConstants.DEFAULT_SHAPE_MINIMUM_WIDTH;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createElementCompositionContext;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createPrototypeMenu;
+import static org.fortiss.tooling.base.ui.editor.fx.visual.CoordinateCorrections.RECTANGLE_INSETS;
 import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.canCompose;
 import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.compose;
 
@@ -146,7 +147,8 @@ public abstract class EObjectRectangularResizableContentControllerBase<T extends
 	/** {@inheritDoc} */
 	@Override
 	protected Dimension2D getMinimumSize() {
-		return new Dimension2D(DEFAULT_SHAPE_MINIMUM_WIDTH, DEFAULT_SHAPE_MINIMUM_HEIGHT);
+		return new Dimension2D(DEFAULT_SHAPE_MINIMUM_WIDTH - 2 * RECTANGLE_INSETS.getWidth(),
+				DEFAULT_SHAPE_MINIMUM_HEIGHT - 2 * RECTANGLE_INSETS.getHeight());
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/.ratings
index 40604380943c328a66a0fe98428016395dcf0b15..8f3c591ba755e687b9edbb34f2a765732da80b4b 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/.ratings
@@ -9,4 +9,4 @@ FeedbackChange.java b088fa89af648f1674f2f9c1f7f99d585ce801ca GREEN
 GridCanvasVisual.java 734027d56af342cd01ff445ba9347b8dbb6c83c2 GREEN
 MVCBundleManager.java 2b4ab114c55b30a3d98d7135458f8f3ddd244d58 GREEN
 MouseState.java 3d9993f799d5d74bc74ac03b46e4a1857c4d267e GREEN
-SVGExporter.java 2211f06d81c7b0523ae52dc832410a76875a9e07 GREEN
+SVGExporter.java cbbd1eceb2910fd5c1693e05c5303a193127b9db GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/SVGExporter.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/SVGExporter.java
index 2211f06d81c7b0523ae52dc832410a76875a9e07..cbbd1eceb2910fd5c1693e05c5303a193127b9db 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/SVGExporter.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/SVGExporter.java
@@ -197,9 +197,13 @@ final class SVGExporter {
 			return;
 		}
 		sb.append("<text ");
+		double yBaselineOffsetFromTop =
+				text.getBoundsInParent().getHeight() - text.getBaselineOffset();
 		setProp("x", text.getX(), sb);
-		setProp("y", text.getY(), sb);
-		setProp("font-family", "Arial, Helvetica, sans-serif", sb);
+		// SVG uses the y-coordinate of the baseline
+		setProp("y", text.getY() + yBaselineOffsetFromTop, sb);
+		setProp("font-size", text.getFont().getSize(), sb);
+		setProp("font-family", text.getFont().getName() + ", Arial, Helvetica, sans-serif", sb);
 		st.applySVGStyle(sb);
 		sb.append(">\n");
 		sb.append(text.getText());
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
index f86b4498f6352f1ac31698af761319730ac39bb2..0b2685b328ff9f229799431d336e9a81d1aa7f88 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
@@ -1,7 +1,7 @@
 AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea GREEN
 ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 GREEN
 ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a GREEN
-ControllerBase.java c74e905a2b47dbf9b6443d94a877f1a9e56ba031 GREEN
+ControllerBase.java 0ab6cf1b36cf3618a70c1666fd8747c59e90dbc6 GREEN
 DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af GREEN
 DelegatingContentAnchorageController.java 2e3b1b4e14402a3503233f816b21ef3e4aa09edc GREEN
 DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/ControllerBase.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/ControllerBase.java
index c74e905a2b47dbf9b6443d94a877f1a9e56ba031..0ab6cf1b36cf3618a70c1666fd8747c59e90dbc6 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/ControllerBase.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/ControllerBase.java
@@ -160,7 +160,13 @@ public abstract class ControllerBase extends MVCBundlePartBase implements IContr
 			IMVCBundle startBundle = getMVCBundle();
 			getViewer().terminateNewLinkLineFeedback();
 			if(canLink(startBundle, startDiagramLocation, endBundle, endDiagramLocation)) {
-				return () -> link(startBundle, startDiagramLocation, endBundle, endDiagramLocation);
+				// Need to copy the location to a local variable to make sure that it is passed
+				// by value to the returned closure. Otherwise the closure will capture 'this' and
+				// link will see a future value of startDiagramLocation, likely null because
+				// startDiagramLocation is being set to null right after this return.
+				final DiagramCoordinate startDiagramLocation_ = startDiagramLocation;
+				return () -> link(startBundle, startDiagramLocation_, endBundle,
+						endDiagramLocation);
 			}
 			return null;
 		}
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/.ratings
index 399ca58251f13125ae9b9f18d5f57304b2fc19e9..44f8474085e656a4e164287981349efed2d1538f 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/.ratings
@@ -1,5 +1,5 @@
 DiamondResizableContentControllerBase.java 31f227e88205bd2e131326bdddd8421991b47d79 GREEN
-RectangularContentAnchorageMoveController.java c119b011f5a38933cee07b8082fcd44c6c3b0037 GREEN
+RectangularContentAnchorageMoveController.java 78b55be1a974ee1bca89a7934afb504f56bd495a GREEN
 RectangularResizableContentControllerBase.java 262b083e4e0ce842b0bb8fbb594585e9f0d2f678 GREEN
 RhomboidContentAnchorageMoveController.java fbd40ce483f99c18cfa94076374f572bb72c2646 GREEN
 RhomboidResizableContentControllerBase.java 863b9eae49bad18f71b20c8cde4b0f350348aa27 GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/RectangularContentAnchorageMoveController.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/RectangularContentAnchorageMoveController.java
index c119b011f5a38933cee07b8082fcd44c6c3b0037..78b55be1a974ee1bca89a7934afb504f56bd495a 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/RectangularContentAnchorageMoveController.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/rectangular/RectangularContentAnchorageMoveController.java
@@ -44,8 +44,9 @@ public class RectangularContentAnchorageMoveController extends ContentAnchorageM
 		Dimension2D anchorageSize =
 				new Dimension2D(anchorageBounds.getWidth(), anchorageBounds.getHeight());
 		Dimension2D borderSnap = overrideBorderSnap(anchorageSize);
-		DiagramCoordinate p = new DiagramCoordinate(anchorageBounds.getMinX() + delta.getX(),
-				anchorageBounds.getMinY() + delta.getY());
+		DiagramCoordinate p = new DiagramCoordinate(
+				anchorageBounds.getMinX() + anchorageSize.getWidth() / 2 + delta.getX(),
+				anchorageBounds.getMinY() + anchorageSize.getHeight() / 2 + delta.getY());
 		return getClosestLocationOnBounds(p, contentBounds, anchorageSize, borderSnap);
 	}
 
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/.ratings
index d28fe8e0fb9f0db1545183c5cbbfaffb8127180f..3eff2b229c1dcb1192a26f580682f789ade3a79d 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/.ratings
@@ -3,5 +3,5 @@ CircularContentVisualBase.java cc3caea328e36e90069b915e413c8e7e9522a939 GREEN
 CircularDiagramAnchorageVisualBase.java 7a3b92fb1b135c218b9a5e16506acfc74a6b5468 GREEN
 CurveLinkVisualBase.java 5ce3086769004a9eb6800d7eb58379d831ff74b1 GREEN
 CurveSegment.java 0e7f70e9526a74aaec2bec4f4fc16295521cf5f2 GREEN
-EllipticBorderLocation.java 1e9b3d42c7fcd5495004fb30b0c499096a839967 GREEN
+EllipticBorderLocation.java af451b11d388ba7ebd3831cf44322909892388e6 GREEN
 EllipticContentVisualBase.java dc2fddc9cfe5605bc8a5d09dd862845e360b23f5 GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/EllipticBorderLocation.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/EllipticBorderLocation.java
index 1e9b3d42c7fcd5495004fb30b0c499096a839967..af451b11d388ba7ebd3831cf44322909892388e6 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/EllipticBorderLocation.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/visual/elliptic/EllipticBorderLocation.java
@@ -10,8 +10,6 @@
 package org.fortiss.tooling.common.ui.javafx.lwfxef.visual.elliptic;
 
 import static java.lang.Math.atan2;
-import static java.lang.Math.cos;
-import static java.lang.Math.sin;
 import static java.util.Objects.requireNonNull;
 
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
@@ -53,14 +51,23 @@ public final class EllipticBorderLocation {
 	/**
 	 * Returns the location computed from this {@link EllipticBorderLocation} relative to the
 	 * ellipse center.
+	 * TODO(JE): leads to java.lang.ArithmeticException: / by zero if cos is 0. What is the
+	 * difference to the existing code? Why is an adaption needed?
 	 */
 	public DiagramCoordinate getLocation() {
-		double rw = radiuses.getWidth();
-		double rh = radiuses.getHeight();
 		double angle = Math.PI * angleInDegree / 180;
-		double x = rw - correction.getWidth() / 2 + rw * cos(angle);
-		double y = rh - correction.getHeight() / 2 - rh * sin(angle);
-		return new DiagramCoordinate(x, y);
+		double rh = radiuses.getWidth();
+		double rv = radiuses.getHeight();
+		DiagramCoordinate middle = new DiagramCoordinate(rh, rv);
+		double cos = Math.cos(angle);
+		double sin = Math.sin(angle);
+		double tan = (sin / cos);
+		// Division by zero will result in tan being Infinity,
+		// which gives the right results for x and y.
+		double x = rh * rv / Math.sqrt(rv * rv + rh * rh * tan * tan);
+		double y = rh * rv * Math.signum(tan) / Math.sqrt(rv * rv / (tan * tan) + rh * rh);
+		return middle.add(x * Math.signum(cos), -y * Math.signum(cos))
+				.subtract(correction.getWidth() / 2.0, correction.getHeight() / 2.0);
 	}
 
 	/**