There is an inconsistency between the origins used when calculating DnD behaviour and position relative to the rootContainer.
The mouse position is obtained using e.pageX/e.pageY. This is relative to the Document.
However, the bounds used when determining the position of the root container (and other bounds) are obtained using Element.getBoundingClientRect which is relative to the viewport.
This leads to incorrect dragging calculations when anything that is a parent of the root container is scrolled.