Hmm, maybe you can add this nice routine i wrote, it will, depending on range and value fade from one color to another, i use it to apply fading colors to particle system in my game.


Code:
function fraction(maxnew, maxold, val: single): single;
begin
  if maxnew = 0 then
    Result := 0
  else
    Result := (val * maxold) / maxnew;
end;

function ColorLERP(src, dest: TColor; min, max, val: single): TColor;
var
  interp: integer;
begin

  interp := trunc(fraction(max, 255, val));

  Result[0] := ClampB(ClampB(src[0] - interp) + ClampB(dest[0] - 255 + interp));
  Result[1] := ClampB(ClampB(src[1] - interp) + ClampB(dest[1] - 255 + interp));
  Result[2] := ClampB(ClampB(src[2] - interp) + ClampB(dest[2] - 255 + interp));
  Result[3] := ClampB(ClampB(src[3] - interp) + ClampB(dest[3] - 255 + interp));
end;