reading mV

I would experiment - I don't think anything is set in stone as to when

analogReference(INTERNAL);

or
analogReference(EXTERNAL); // ??

is called - maybe just a time thing to let the voltages settle before taking a reading.

Apply a 1/2 volt, write a little code to change back & forth, see what happens.

Even if you just use a gain of 10 to get your signal to 1V, you could use the 1.1V internal reference, and then 1 bit would represent 0.1075mV for your display.