path rebuilds can be expensive, so things like mouse-drag with large datasets can become problematic.
it should be possible to re-use the internally-cached Path2D objects and construct a transformation matrix to draw them in a shifted or scaled location while dragging, then do a real redraw & path rebuild when the mouse is released. should help a lot.
something like u.shift(hzPx, vtPx)