         (array[0] * amount) + (array[1] * (1 - amount))
 
       [@r, @g, @b, @a] = mixedColors
-      @r = @r.round()
-      @g = @g.round()
-      @b = @b.round()
 
       return this 
 


      rgbMap = (channel * 0xFF for channel in [r, g, b])

      rgbMap[0] = rgbMap[0].round()
      rgbMap[1] = rgbMap[1].round()
      rgbMap[2] = rgbMap[2].round()

    return rgbMap.concat(a)

  normalizeKey = (key) ->
    key.toString().toLowerCase().split(' ').join('')

  Color2 = (args...) ->
    switch args.length
      when 0
        parsedColor = [0, 0, 0, 1]
      when 1
        if Object.isArray(color = args.first())
          parsedColor = (parseFloat(channel) for channel in color)
          parsedColor[3] ||= 1.0
        else
          parsedColor = lookup[normalizeKey(color)] || parseHex(color) || parseRGB(color) || parseHSL(color)
      when 2
        alpha = parseFloat(args[1])

        if Object.isArray(color = args.first())
          parsedColor = (parseFloat(channel) for channel in color)
          parsedColor[3] = alpha
        else
          parsedColor = lookup[normalizeKey(color)] || parseHex(color) || parseRGB(color) || parseHSL(color)
          parsedColor[3] = alpha
      else     
        parsedColor = (parseFloat(channel) for channel in args)
        parsedColor[3] ||= 1.0   

    throw "#{args.join(',')} is an unknown color" unless parsedColor   


    return undefined unless channels = hslParser.exec(colorString)

    parsedColor = (parseFloat channel for channel in channels[1..3])
    parsedColor[0] = parsedColor[0]
    parsedColor[3] ||= 1.0

    return hslToRgb(parsedColor)

  hslToRgb = (hsl) ->    
    [h, s, l, a] = (parseFloat(channel) for channel in hsl)

    h /= 360.0
    a ||= 1.0

