So Im rotating my geometry with: vector rot = my_normalized_axis; // this is local axis, not some global like {0, 1, 0} float angle = this_is_my_angle; vector piv = my_nice_pivot; matrix3 rotm = ident(); prerotate(rotm, angle, rot); vector4 orient = quaternion(rotm); matrix m = instance(piv, 0, 1, 0, orient, piv); @P *= m; And everything is nice and dandy, except that now I want for my vector rot to apply the rotation too. Because now it just stays as it is. So this sounds easy but