it seems to hang up under certain conditions - hard to describe
Usually you can unblock it by moving around the lower right corner.
Here is a variant that uses the three red points to define the bounding rectangle. The only difference is that now the other points can go outside the rect.
if 1
; optional: use the "biggest" array to define a common range ArrayPlot My3Pts(XY), 0, 0, MyMargins, SetRange
; the three red points define the rangeelse ArrayPlot AllPts(XY), 0, 0, MyMargins, SetRange
; the big array defines the rangeendif