本家スタックオーバーフローでも同様の質問がされています。

https://stackoverflow.com/questions/35242838/javafx-zooming-to-mouse-as-pivot

この記事の質問者は自己解決されたようなのですが、私は解決に至っておらず、改めて日本語版の方で質問させていただくことにしました。

この記事の概要は下記の通りです。

  • ノードが全てグリッド上に存在するときは期待通り(マウス位置を中心に)ズームされる
  • ノードがグリッド外にある時にズームすると位置がずれる。

キモの部分はScrollEventのhandleメソッドです。dx,dyが拡縮の中心位置を設定しているのはわかるのですが、このロジックでノードがグリッド外にある時に計算結果がズレる理由がわかりません。

ノードがグリッド外にあるときでも正常にズームできる方法はないでしょうか?
タイトルの機能を実装することが目的なので、全く別の実現方法でもかまいません。