When zooming via double-click, holdViewAtPage() was using a stale previousPageIndex (defaulting to 0) to calculate page boundaries, causing the view to incorrectly snap to the first page after scaling.
Update previousPageIndex to currentIndex before calling scaleAroundPoint() so that getCurrentPageParams() computes the correct page position at the new zoom level.