Could it be that matrices are stored with reversed majority instead (so like in the order ._11, ._12, ._13, ._14, ._21, ... and you're reading them as ._11, ._21, _31, _41, _12, ...)?
What do you mean by reversed majority? Reversed byte order?
I mean that, probably, the matrices are stored as row-major (i.e. row after row) but then GetValue() will return the data column-major (column after column), or the other way around.