Всё таки цвета RGB поканально
складываем и делим на количество.
Вычитание будет для
проходящего света, например, при расчете прозрачного светофильтра.
А для смешивания цветов при самосвечении или излучении света в отраженном белом, как в случае с "живой краской":

Код AS1/AS2:
color1 = new Color(mc1);
color1.setRGB(0xFFFF00);
color2 = new Color(mc2);
color2.setRGB(0xFF0000);
color3 = new Color(mc3);
//FF = (FF + FF) / 2
//7F = (FF + 00) / 2
//00 = (00 + 00) / 2
color3.setRGB(0xFF7F00);
А еще лучше использовать метод setTransform того же класса Color, что удобнее для вычислений и гибче, поскольку можно также работать с альфой каналов. Тем более использовать в связке с getTransform, чтобы можно было "макать" в уже окрашенный объект (палитру или элемент рисунка), узнавая текущую цветовую трансформацию.
Или даже Transform.colorTransform, хотя я не уверен, с этим методом не работал.
UPD. Поправьте меня, если я не прав, сомнения что-то появились. "Оптику" я хоть и сдал на отлично, но это была "Физика" и оч.давно.