only call QColor() when necessary