Would the process be to create the following Matrices and multiply them: Offset1: Create a translation matrix based on pivot.Multiply(-1) Offset2: Create a translation matrix based on pivot to move it back. Create a rotate matrix by multiplying (Offset1 * myrotation * Offset2) * existing rotation matrix

This sample code takes the original matrix, pivot point, and a vector change and creates a new matrix based on the above logic: