function color(fromValue, toValue, progress) {
  fromValue = colorValueToNumber(fromValue)
  toValue = colorValueToNumber(toValue)
  return rgbToNumber(
    number(fromValue >> 16 & 255, toValue >> 16 & 255, progress),
    number(fromValue >> 8 & 255, toValue >> 8 & 255, progress),
    number(fromValue & 255, toValue & 255, progress)
  )
}
Interpolator for color values; decomposes the color into r/g/b channels and does
numeric interpolation on each individually. The result is a 24-bit integer value
holding the r/g/b channels in its 3 bytes.