Ok, immediately after posting this I noticed something that turned out to be the problem.
My underlying data is now uint16 (yesterday it was double). I convert to single to plot so that was not a problem, but I calculate clims on the original data which means my clims are of type 'uint16'.
Thus when I added:
caxis( hAxes, clims )
which always used to be there, but used to be of type double, I get the above plot.
I'll leave the question up because it is, to me, slightly surprising behaviour that may catch others out too.
The moral of the story is not to use uint16 data type for the colourmap limits property even if your image data is just integers!