Está muy bien tu codigo para hacer las conversiones con las GDI pero lo que pasa es que la aplicacion sobre la que estoy trabajando ya usa la dll FreeImage para otras cosas y poner mas codigo cuando ya tengo una dll que lo hace lo veo innecesario. Lo que necesito es saber donde está el fallo aunque me quedo con tu codigo para otra ocasion

.
Mira lo que puedo ver entre la que me lo crea bien y la que me da error:
http://postimg.org/image/qsstjp62x/
Cambian algunas cosas pero he intentado hacer que la que falla llegue con los mismos valores pero ni por esa funciona.