HSV conversions now use full float precision