Hi Janos,
the problem can be understood in the 1D case; with:
ListLinePlot[Range[8], InterpolationOrder -> 0]
one can see that within 8 data points lay basically only 7 levels. This is, because InterpolationOrder
is set to 0. A quickfix could be to add a copy of the last data point to the data:
ListLinePlot[Append[Range[8], 8], InterpolationOrder -> 0]
Following this idea it means for your 2D case:
(* your data: *)
data = {{2.3395, 2.13521, 2.27173, 2.81287, 2.25045, 2.26119, 2.34844,
2.44469}, {2.77805, 2.25561, 2.20846, 2.33292, 2.43347, 2.22756,
2.59013, 2.26579}, {2.22386, 2.79931, 2.12116, 2.11051, 2.29534,
2.62082, 2.09523, 2.15395}, {2.3066, 2.12227, 2.47889, 2.03011,
2.23263, 2.08004, 2.31913, 2.50845}, {1.9736, 2.23196, 2.14964,
2.18781, 2.40687, 2.0782, 2.30555, 2.31223}, {2.40094, 2.11356,
2.26898, 2.46934, 2.36108, 2.38895, 2.25621, 2.11581}, {2.19419,
2.38536, 2.57452, 2.26367, 2.64318, 2.01926, 2.69193,
2.38917}, {2.51357, 2.31244, 2.52476, 2.72018, 2.38392, 2.03368,
2.18047, 2.69192}};
(* adding copy of last column: *)
data9 = Append[#, Last[#]] & /@ data;
(* adding copy of last line: *)
data9 = Append[data9, Last[data9]];
In[34]:= data9 // Dimensions
(* Out[34]= {9, 9} *)
ListPlot3D[data9, InterpolationOrder -> 0]
Maybe that helps, but I am quite sure there are less crude solutions (and curious to see!).
Regards -- Henrik