Make small circles a min of 4px.

Any smaller and they are really hard to click on.
Use some trigonometry to position line endings better.

Use the target & source data combined with the radius of the circle to
determine the amount of adjustment required to position the end of the
line at the edge of the circle. Doing this adjustment lets the arrow
heads display even on larger circles.

Given the radius of the circle is constant, we can use the angle,
run and trigonometric ratios to determine the dimensions of
a triangle that has radius == hypotenuse.