Arduino Due Unpredictable Analog Input Behavior

That's an excerpt from the analogRead implementation for the SAM:

	static uint32_t latestSelectedChannel = -1;
	switch ( g_APinDescription[ulPin].ulAnalogChannel )
	{
		// Handling ADC 12 bits channels
		case ADC0 :
		case ADC1 :
		case ADC2 :
		case ADC3 :
		case ADC4 :
		case ADC5 :
		case ADC6 :
		case ADC7 :
		case ADC8 :
		case ADC9 :
		case ADC10 :
		case ADC11 :

			// Enable the corresponding channel
			if (ulChannel != latestSelectedChannel) {
			  adc_enable_channel( ADC, ulChannel );
			  latestSelectedChannel = ulChannel;
			}

It looks like there's no change in the MUX configuration if the stored channel is the same as the one of the last call. If you're calling that from interrupt context, it might be possible that these stuff gets disordered somehow. I would try to remove this optimization and call adc_enable_channel() in each call. The look if your results change.