We use a new positioning for edge labels, and fixed moving of them with the mouse.
X-coordinate: the percentual position on the length of the edge in direction of the edge
Y-coordinate: the absolute offset, orthogonally to the edge
Note that this requires to change the position of the default label from (u/2,u/2) to (u/2,0), meaning 50% (in the center of the edge) with 0 px offset. For a label at the end of an edge with some 20 px offset you would use (u, 20), and for a label at the start of the edge at the other side of it you would use (0, -20) - eg. for multiplicities, where u = GraphConstants.PERMILLE.