Weird bit stretching on ATmega2560 uart
The problem is caused by the 'ADC Noise Reduction Mode'. I enter this mode to do ADC conversions: If the ADC is enabled, a conversion starts automatically when this mode is entered.
In this mode, some clocks are halted during the ADC conversion.

One of the halted clocks is clkI/O, which is used as the basis for the u(s)art clock. This causes the bit stretching.

You set ADC Noise Reduction Mode in register SMCR (Sleep Mode Control Register). I do this using the following code:

unsigned int volatile adc_data;

// ADC interrupt service routine
ISR(ADC_vect)
{
    /* Read ADC result */
    adc_data = ADCW;
}

// Read the AD conversion result
// with noise canceling
unsigned int read_adc(unsigned char adc_input)
{
    ADMUX=adc_input|ADC_VREF_TYPE;
    /* SM0 bit set is ADC noise reduction (see datasheet) */
    set_sleep_mode(_BV(SM0));
    /* sleep until ADC interrupt */
    sleep_mode();
    return adc_data;
}


The problem went away when I changed the sleep mode call to set_sleep_mode(0);. We then enter Idle Mode instead of ADC Noise Reduction Mode. In this mode, clkI/O is not halted.

But, luckily for us, an ADC conversion also starts automatically when this mode is entered. 

I found this on Serial Communication Errors Caused by Noise Reduction Analog-To-Digital Converter