It is indeed the preset altitude that is wrong.
When the altitude is captured it is maintained within a small tolerance.
I have been suspecting the transponder to show an altitude also off by some hundred feets. Is the grey-code information coming from here?