I’m ignoring skew and perspective because it’s a rigid transform. In any case, the resulting matrix has the orientation flipped on X and Y axis. And the resulting ofNode::localTransformMatrix does not match the incoming m44.

decomposing a matrix into it’s components is not completely reliable and things like this happen. you might have more luck using a simpler method since you know that your matrix contains an affine transformation (ie has no perspective)

there’s some other methods for decomposition where you just get the scale + rotation part of the matrix. normalizing that gives you the rotation and the magnitude is the scale. I don’t remember the details of such method though

Here’s approach #2, it works well with orientation and position, but when scaling things go funky. Method #1 does tolerate scaling, but rotation seems flipped on every axis… I may go with #1 and manually flip rotation