Help with differences between Image and float[] array in hydraulic erosion

First chunk is the source noise, second is erosion implemented with an Image, third is converted to an array of floats

I have a working hydraulic erosion implementation. I’m converting it from using Image class (GetPixel etc. is slow) to an array of floats float[]. C#

It should’ve been simple, but the results do not match. As you can see the array version is jagged compared to the Image version. What could be causing this? Does Image apply some kind of interpolation when reading or setting values? I’m at my wit’s end, I’ve been debugging the erosion script for hours. There shouldn’t be any differences between the two, just how they read and set the height values.

Random gen seed is the same in both and the conversion (Image to float[] to Image) works without issue, I tested this. All erosion settings are of course the same, too.

Any ideas on what could be causing this?