Noch ne Idee aus der Schulzeit: Kürzen. Hier kürzen durch 8.
Dann steht da: ADC*25/128
Dann geht es, selbst mit int16_t, so genau wie Deine Lösung mit uint32_t.

Bzw. Extremkürzing , wenn es 2% ungenauer sein darf: ADC/5 (siehe auch oberallgeier)