I have a normal that I want to align a rotation matrix's Up vector to, but I want to preserve the general direction of the Forward. Right now, I'm projecting the current Forward onto the plane perpindicular to that normal to get the new Forward, than getting the new right vector by crossing the normal and Forward.

Is there a way to build a rotation matrix that I can multiply my original rotation matrix with in order to get the same result?