I've been coding my own math library and I got a bug when I create a Matrix from a rotation across the X, Y and Z axises. The bug is that it also scales my vectors. I know it might be hard to understand my code, but you are my only hope left (I checked and checked again my code a lot of times) so here's my code:

static Matrix4x4<T> CreateFromRotationXYZ_S(const T &radiansX, const T &radiansY, const T &radiansZ) { Matrix4x4<T> result; result.m11 = cos(radiansY) * cos(radiansZ); result.m12 = cos(radiansY) * sin(radiansZ); result.m13 = sin(radiansY); result.m14 = 0; result.m21 = sin(radiansX) * -sin(radiansY) * cos(radiansZ) + cos(radiansX) * -sin(radiansZ) + sin(radiansX) * cos(radiansY); result.m22 = sin(radiansX) * -sin(radiansY) * sin(radiansZ) + cos(radiansX) * cos(radiansZ) + sin(radiansX) * cos(radiansX); result.m23 = sin(radiansX) * cos(radiansY); result.m24 = 0; result.m31 = cos(radiansX) * -sin(radiansY) * cos(radiansZ) + sin(radiansX) * sin(radiansZ); result.m32 = cos(radiansX) * -sin(radiansY) * sin(radiansZ) + -sin(radiansX) * cos(radiansZ); result.m33 = cos(radiansX) * cos(radiansY); result.m34 = 0; result.m41 = 0; result.m42 = 0; result.m43 = 0; result.m44 = 1; return result; }

Thank you