The if statements are based on one stored value.
Are they ?
Serial.print(left.read());
if((left.read() > COLORLINETHRESHOLD) && (center.read() > COLORLINETHRESHOLD) && (right.read() > COLORLINETHRESHOLD))
I see 2 calls to the left.read() function and there are more. They may not all return the same value as they are done over a period of time. Call the function once and use the returned value as many times as needed.