It all depends how mDoc->get_Rect is implemented, it seems like it is returning the address of existing "rect" hence both the objects are pointing to the same content and hence you are having the problem.
-Prakash
If you look more closely at VARIANT constructors (more precisely, at _variant_t, you'll notice that one of them accepts IUnknown* and bool arguments. This is exactly what you need:
pDoc->AddImage(_variant_t(pIImage, true));