Had a thought today - just tried it out...
Add the following three lines:
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_IOCON);
Chip_IOCON_PinSetMode(LPC_IOCON, IOCON_PIO23, PIN_MODE_INACTIVE);
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_IOCON);
Makes a big difference for me ;-) [obviously adjust the IOCON pin as needed]
On a very quick test my readings from 0 to 2818 (of 4096) are to within better than 1% as far as my DVM shows (and that includes the measured voltage going through a voltage divider.
Hope that helps!
S.