Möglicherweise kann dir auch DrawIconEx() helfen. Damit lässt sich die Breite und Höhe des gezeichneten Icons festlegen. Allerdings sieht das Resultat (wenn man ein mit LoadIcon() geladenes 48x48 Icon zeichnet) dann so aus, als ob das Icon einmal zu 32x32 gestaucht und hinterher zu 48x48 gestreckt wurde.
Das Problem liegt also
IMHO beim Laden der Icons.