I'm pretty sure transponder altitude reporting is based on standard pressure setting. If you are flying a QNH you would expect there to be a difference between altimeter and level reported by the transponder. A 300ft error yesterday would suggest that you had QNH 1023 set, or thereabouts, which ties in with yesterday's weather. 5000ft on 1023mb equates to FL047 which would appear 300ft low, not high as you said, to ATC if they were expecting you at FL050. Hmmm.