Me he tomado la molestia de traducir parte del
código publicado en C/C++ a delphi. La parte traducida muestra como guardar correctamente un archivo.ico a partir de su Handle con el suficiente número de colores para no perder información.
Aquí lo tenéis.
Espero que sea de utilidad.
Saludos.