Navegando por internet he visto que hay algunos temas en los que tratan este problema. No se si será debido a un fallo en la librería de borland o a una mala configuración del objeto _di_IPictureDisp, pero después de hacer:
Código C++:
Ver originalGetOlePicture(pic, *pIPD);
SetOlePicture(pic2, *pIPD);
El resultado en pic2 es una imagen corrupta... seguramente tus problemas vengan de ese punto. Prueba a guardar pic2 después del SetOlePicture y comprueba si la imagen se ve correctamente o no.
PD.: si es un bug viene de antiguo, he encontrado un
hilo tratando este mismo problema... en el 2005!!!
Un saludo.