To clarify: for each value, we have a Server value and a Formatted value.
In onChangingValues, the Server value is constant, while the Formatted value has a factory default at the method entrance (that you can query through getFormattedValue) and it has to be the desired one at method exit (so you can change it through setFormattedValue).

Moreover, null as a Formatted value has a special meaning, which is "don't touch the cell at all" and, in some cases, it can be used as the factory default. We do that for Overwrite or Metapush tables in case of unchanged values.
For Scroll tables we also do that, but, unfortunately, it's a bug. The fact that, with null, you eventually see the unformatted value in the cell is just a consequence of the same bug, which anyway you prevent by always setting the Formatted value.