to scale it about a point P, move the object into a coordinate system with center P, scale, and them move it back.
It's been a while since I did those thing myself, so I may be wrong, but I think it should be
that looks like it should work fine. You didn't put any code in though so I'm not sure how you're storing or foruming your world matrix. If you should ever need to combine separate matrices by multiplication to make the world matrix, multiply them in this order: