 				else if deltaH < -180
 					deltaH = (toH + 360) - fromH
 
-				result = new Color
+				tween =
 					h: Utils.modulate(fraction, [0, 1], [fromH, fromH + deltaH], limit)
 					s: Utils.modulate(fraction, [0, 1], [hslA.s, hslB.s], limit)
 					l: Utils.modulate(fraction, [0, 1], [hslA.l, hslB.l], limit)
-					a: Utils.modulate(fraction, [0, 1], [hslA.a, hslB.a], limit)
+					a: Utils.modulate(fraction, [0, 1], [colorA.a, colorB.a], limit)
+
+				if model == "hsl" || model == "hsla"
+					# hsl model
+					result = new Color
+						h: tween.h
+						s: tween.s
+						l: tween.l
+						a: tween.a
+				else
+					rgb = xyzToRgb luvToXyz lchToLuv huslToLch([tween.h, tween.s, tween.l])
+
+					result = new Color
+						r: rgb[0] * 255
+						g: rgb[1] * 255
+						b: rgb[2] * 255
+						a: tween.a
 
 		return result
 

	##############################################################
	## Class methods

	@mix: (colorA, colorB, fraction = .5, limit = false, model = "hsl") ->

		result = null



			else

				hslA
				hslB

				if model == "hsl" || model == "hsla"
					# hsl model
					hslA = colorA.toHsl()
					hslB = colorB.toHsl()
				else
					# husl model
					hslA = colorA.toHusl()
					hslB = colorB.toHusl()

				if hslA.s == 0
					hslA.h = hslB.h
