Well, interpolate(...) calls othonormalize() to ensure that it's a orthonormal matrix. And in this process, the matrix gets normalized...and so your scaling is gone. But as said: This is a overcomplicated way to change a scaling over time. Just interpolate the scaling value itself instead of the matrix and all is fine.