csc собирался без /win32icon, поэтому у exe не было значка вовсе, а окно пыталось сделать значок из icon.png через GetHicon — тот теряет альфу и не даёт нужных размеров. Теперь многоразмерный icon.ico вшит в exe, а окно берёт значок из себя же.