There is a round about way to maintain A/D calibration accuracy without having to use an external voltage reference.
Normally the default arduino reference used for A/D conversion is the voltage applied to the Avcc pin, +5volts for most boards. The problem is that USB power is not exactly +5vdc and even the on-board +5vdc can have a variation from exactly +5.00 volts. As most assume that 1023 counts = +5.00 volts you can see the reason for there to be a source of calibration error in most Arduino boards. Now all arduino boards have an optional internal 1.1vdc reference that one can use that won't be subject to error caused by +5 Vcc voltage variation, it however does require you not wire analog signals to the board unless their maximum range doesn't exceed 1.1vdc, either by voltage dividers or other ways. The Mega has a optional internal 2.56 voltage reference that can also be used this way.
However there is a way for a sketch to find out the exact voltage level that is powering it's chip via a read of the internal bandgap, and therefore calculate a correction factor in a mapping function so that calibration can be maintained with changing Vcc voltage while still using the Avcc as the reference. This can be especially usefull for battery powered arduinos where say 4 AA cells are wired directly to the Arduino +5vdc pin to power the board.
The topic and method were posted in the old forum and my reply #8 has the final code I developed with help "from Coding Badly". It's just a demo that prints out the calculated Vcc voltage and any voltage wired to analog pin 0. I tested the sketch by wiring a variable DC voltage regulator to power the board and saw that a 3.3vdc wired to pin A0 stayed accurate even while I adjusted the Vcc power from 5.5vdc down to 3.5vdc.
Again there are several methods to improve the accuracy of the Arduino A/D convertor, this just one 'zero' hardware method.
If you just want to improve your calibration accuracy for your specific board, then all that is required is that you measure your on-board +5 volt regulator and use the actual voltage to correct your error out with a mapping function.