>>574
座標を整数ではなく、0.5とかにしたのは、当時参考にしたサイトによる影響です。
https://web.archive.org/web/20150410050105/http://www.maroon.dti.ne.jp:80/twist/4C616E637A6F73B4D8BFF4A4CBA4E8A4EBB2E8C1FCA4CEB3C8C2E7BDCCBEAE.html

縮小(Shrink)では、リサイズ後の座標に比率を掛けてリサイズ前の座標に対応する、計算対象となる前後の対象範囲を求めてます。

From: (int)Math.Floor(scaleFactor * (x - 2))
To: (int)Math.Floor(scaleFactor * (x + 3))


Enlargeの方は、バグかな?と思ったのですが、Shrinkを用いて極端な拡大(例えば100倍)を行った場合、モザイク状になってしまうところ、
偶然、丁度良くスムージングが掛かった画像が得られ、見た目もこちらの方が好みなので、そのままにしておきました。

From: (int)Math.Floor(scaleFactor * x) - 2
To: (int)Math.Floor(scaleFactor * x) + 3