iOS encuentra el color en el punto entre dos colores

Tengo un problema: necesito poder tomar dos colores y hacer un "degradado virtual" de ellos. Entonces necesito poder encontrar el color en cualquier punto de esta línea. Mi enfoque actual es este:

if (fahrenheit < kBottomThreshold)
{
    return [UIColor colorWithRed:kBottomR/255.0f green:kBottomG/255.0f blue:kBottomB/255.0f alpha:1];
}
if (fahrenheit > kTopThreshold)
{
    return [UIColor colorWithRed:kTopR/255.0f green:kTopG/255.0f blue:kTopB/255.0f alpha:1];
}

double rDiff = kTopR - kBottomR;
double gDiff = kTopG - kBottomG;
double bDiff = kTopB - kBottomB;

double tempDiff = kTopThreshold - kBottomThreshold;

double rValue;
double gValue;
double bValue;

rValue = kBottomR + ((rDiff/tempDiff) * fahrenheit);
gValue = kBottomG + ((gDiff/tempDiff) * fahrenheit);
bValue = kBottomB + ((bDiff/tempDiff) * fahrenheit);

return [UIColor colorWithRed:rValue/255.0f green:gValue/255.0f blue:bValue/255.0f alpha:1];

Variables:

fahrenheit&nbsp;es una variable que se pasa a mi función y es el número en esta línea virtual para la que quiero encontrar el color.kTopR, kTopBykTopG&nbsp;son los valores RGB para un extremo del gradiente. Igual para sukBottom&nbsp;contraparteskBottomThreshold&nbsp;ykTopThreshold&nbsp;Son los puntos finales de mi gradiente.

Aquí está mi problema: Cuandofahrenheit&nbsp;sobre cada extremo del gradiente, el gradiente parece "saltar" a un valor diferente.

He incluido un proyecto de ejemplo, alojado en mi servidor S3,aquí.

Realmente necesitas descargar el proyecto y probarlo en el simulador / dispositivo para ver a qué me refiero.&nbsp;(a menos que sea un loco inteligente y pueda decirlo con solo mirar el código)