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 c2c5235bd3b9deb31fdbf82757057360aa46d36b..b0919970948f955eebfde4f8f242ca98603d22aa 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 YELLOW
 CircularDiagramAnchorageVisualBase.java 7a3b92fb1b135c218b9a5e16506acfc74a6b5468 YELLOW
 CurveLinkVisualBase.java 0b8706214320d715966c86a5242ad21c8bf5a315 YELLOW
 CurveSegment.java 445bc2607cb70ae1c788c27ba9fc637dd7df4956 YELLOW
-EllipticBorderLocation.java 1e9b3d42c7fcd5495004fb30b0c499096a839967 YELLOW
+EllipticBorderLocation.java 6775dd54c01f8d76ecf1721185b60b63f1eec6c2 YELLOW
 EllipticContentVisualBase.java dc2fddc9cfe5605bc8a5d09dd862845e360b23f5 YELLOW
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..6775dd54c01f8d76ecf1721185b60b63f1eec6c2 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;
@@ -55,12 +53,19 @@ public final class EllipticBorderLocation {
 	 * ellipse center.
 	 */
 	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);
 	}
 
 	/**