strange, when i simplified the issue in code for you to see, it disappeared:
in NodeModifying handler, i had:
Rect size = new Rect(0, 0, diag.Viewport.Width, diag.Viewport.Height);
size.Offset(xoffdrop, yoffdrop); //20,20 only
if (!size.Contains(MousePosition)) //not within view itself
noVea.CancelDrag();
which was cancelling moving of nodes once i moved another type of node way down in zoomed out mode so that the scrollbar moved.
Now that i simplified this to:
if (!diagH.Viewport.Contains(MousePosition))
noVea.CancelDrag();
the canceldrag does not happen prematurely, its always OK

====
maybe either viewport width/height or offset do not work for zoomed out viewports?
but i'm a happy coder atm thx