From f9dfd7811c5fa1f819ed2959ae596b651ed79ab3 Mon Sep 17 00:00:00 2001
From: Daniel Grunwald <daniel@danielgrunwald.de>
Date: Sat, 20 Aug 2011 22:39:36 +0200
Subject: [PATCH] Fix RGB <-> HSV conversion.

---
 .../ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs    | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs
index 6df1e66c4d..a78e86adc7 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs
@@ -61,6 +61,8 @@ namespace ICSharpCode.SharpDevelop.Widgets
 			else {
 				h = 60 * (r - g) / (max - min) + 240;
 			}
+			
+			if (h < 0) h += 360; // C# '%' can return negative values, use real modulus instead
 
 			if (max == 0) {
 				s = 0;
@@ -76,6 +78,7 @@ namespace ICSharpCode.SharpDevelop.Widgets
 		public static void RgbFromHsv(double h, double s, double v, out double r, out double g, out double b)
 		{
 			h = h % 360;
+			if (h < 0) h += 360; // C# '%' can return negative values, use real modulus instead
 			int hi = (int)(h / 60) % 6;
 			var f = h / 60 - (int)(h / 60);
 			var p = v * (1 - s);