private static Rgb NormalizeRgb(ColorSpace colorSpace) { var rgb = colorSpace.ToRgb(); if (rgb.R < 0 || rgb.R.ApproximatelyEquals(0, 0.001)) { rgb.R = 0; } else if (rgb.R > 255 || rgb.R.ApproximatelyEquals(255, 0.001)) { rgb.R = 255; } else { rgb.R = System.Math.Round(rgb.R); } if (rgb.G < 0 || rgb.G.ApproximatelyEquals(0, 0.001)) { rgb.G = 0; } else if (rgb.G > 255 || rgb.G.ApproximatelyEquals(255, 0.001)) { rgb.G = 255; } else { rgb.G = System.Math.Round(rgb.G); } if (rgb.B < 0 || rgb.B.ApproximatelyEquals(0, 0.001)) { rgb.B = 0; } else if (rgb.B > 255 || rgb.B.ApproximatelyEquals(255, 0.001)) { rgb.B = 255; } else { rgb.B = System.Math.Round(rgb.B); } var rgba = rgb as Rgba; if (rgba != null) { if (rgba.A < 0 || rgba.A.ApproximatelyEquals(0, 0.001)) { rgba.A = 0; } else if (rgba.A > 255 || rgba.A.ApproximatelyEquals(255, 0.001)) { rgba.A = 255; } else { rgba.A = System.Math.Round(rgba.A); } } return(rgb); }