Проблема вызвана EdgeRenderer. Это сбивает с толку, если ребра связаны с верхним левым углом вершины. Когда я изменил свои формы с
CIRCLE(new Ellipse2D.Double(0,0,40,40)),
BOX(new Rectangle2D.Double(0,0,40,40));
до
CIRCLE(new Ellipse2D.Double(-20,-20,40,40)),
BOX(new Rectangle2D.Double(-20,-20,40,40));
Точки соединения перемещены в центр вершин, и оттуда EdgeRenderer делает свое волшебство без проблем.
Тем не менее, я не понимаю, почему изменение положения рамки фигуры делает эту разницу. Был бы рад, если бы кто-то мог объяснить это.