Try this below: XMMATRIX is transpose of the transform matrix, so you read it as column,row XMMATRIX viewMatrix = XMMatrixRotationQuaternion(v_quaterion); XMFLOAT4X4 f_view; XMStoreFloat4x4(&f_view, viewMatrix); f_view._41 = mPosition.x * f_view._11 + mPosition.y * f_view._21 + mPosition.x * f_view._31; f_view._42 = mPosition.x * f_view._12 + mPosition.y * f_view._22 + mPosition.x * f_view._32; f_view._43 = mPosition.x * f_view._13 + mPosition.y * f_view._23 + mPosition.x * f_view._33; viewMatrix = XMLoadFloat4x4(&f_view); You need to multiply the translation vector by the rotation first