Index: src/TaskTreeView.cs
===================================================================
--- src/TaskTreeView.cs	(Revision 190)
+++ src/TaskTreeView.cs	(Arbeitskopie)
@@ -384,6 +384,16 @@
 			}
 			
 			string formatString = "{0}";
+			
+			Preferences prefs = Application.Preferences;
+			string todayTasksColor = prefs.Get (Preferences.TodayTaskTextColor);
+			string overdueTaskColor = prefs.Get (Preferences.OverdueTaskTextColor);
+			
+		    if (task.DueDate.Date == DateTime.Today)
+			    crt.Foreground = todayTasksColor;
+			else if (task.DueDate.Date < DateTime.Today)
+			    crt.Foreground = overdueTaskColor;
+			
 			switch (task.State) {
 			case TaskState.Inactive:
 				// Strikeout the text
Index: src/PreferencesDialog.cs
===================================================================
--- src/PreferencesDialog.cs	(Revision 190)
+++ src/PreferencesDialog.cs	(Arbeitskopie)
@@ -53,6 +53,15 @@
 		Gtk.TreeModelFilter		filteredCategories;
 		List<string>			categoriesToHide;
 		Gtk.TreeView			categoriesTree;
+
+		//
+		// Appearance Page Widgets
+		//
+		Gtk.Widget				appearancePage;
+		Gtk.Entry				txtTodaysTaskColor;
+		Gtk.ColorButton			btnChangeTodaysTaskColor;
+		Gtk.Entry				txtOverdueTaskColor;
+		Gtk.ColorButton			btnChangeOverdueTaskColor;
 		
 		//
 		// Backend Page Widgets
@@ -106,7 +115,14 @@
 				notebook.AppendPage (generalPage,
 									 new Label (Catalog.GetString ("General")));
 			
+			// 
+			// Appearance Page
 			//
+			appearancePage = MakeAppearancePage ();
+			appearancePage.Show();
+			notebook.AppendPage(appearancePage, 
+			                    new Label (Catalog.GetString ("Appearance")));
+			//
 			// Backend Page
 			//
 			backendPage = null;
@@ -132,6 +148,82 @@
 			DeleteEvent += WindowDeleted;
 		}
 		
+		private Gtk.Widget MakeAppearancePage()
+		{
+			VBox vbox = new VBox (false, 6);
+			vbox.BorderWidth = 10;
+			
+			VBox sectionVBox = new VBox (false, 4);
+			Label l = new Label ();
+			l.Markup = string.Format ("<span size=\"large\" weight=\"bold\">{0}</span>",
+									  Catalog.GetString ("Color Management"));
+			l.UseUnderline = false;
+			l.UseMarkup = true;
+			l.Wrap = false;
+			l.Xalign = 0;
+			
+			l.Show ();
+			sectionVBox.PackStart (l, false, false, 0);			
+			
+			HBox hbox = new HBox (false, 6);			
+			Label lblTodaysTaskColor = new Label ();
+			lblTodaysTaskColor.Text = Catalog.GetString("Today:");
+			lblTodaysTaskColor.Show();
+			
+			Preferences prefs = Application.Preferences;
+			txtTodaysTaskColor = new Entry();
+			txtTodaysTaskColor.Text = prefs.Get (Preferences.TodayTaskTextColor);
+			txtTodaysTaskColor.Changed += OnTxtTodaysTaskColorChanged;
+			txtTodaysTaskColor.Show();
+			
+			btnChangeTodaysTaskColor = new ColorButton();
+			string todayTasksColor = prefs.Get (Preferences.TodayTaskTextColor);
+			Gdk.Color currentColor = new Gdk.Color();
+			Gdk.Color.Parse (todayTasksColor, ref currentColor);
+			btnChangeTodaysTaskColor.Color = currentColor;
+			
+			btnChangeTodaysTaskColor.ColorSet += OnBtnChangeTodaysTaskColorColorSet;
+			btnChangeTodaysTaskColor.Show();
+			
+			hbox.PackStart (lblTodaysTaskColor, false, false, 0);
+			hbox.PackStart (txtTodaysTaskColor, false, false, 0);
+			hbox.PackStart (btnChangeTodaysTaskColor, false, false, 0);
+			hbox.Show ();
+			
+			HBox hbox2 = new HBox (false, 6);
+			
+			Label lblOverdueTaskColor = new Label ();
+			lblOverdueTaskColor.Text = Catalog.GetString("Overdue:");
+			lblOverdueTaskColor.Show();
+			
+			txtOverdueTaskColor = new Entry();
+			txtOverdueTaskColor.Text = prefs.Get (Preferences.OverdueTaskTextColor);
+			txtOverdueTaskColor.Changed += OnTxtOverdueTaskColorChanged;
+			txtOverdueTaskColor.Show();
+			
+			btnChangeOverdueTaskColor = new ColorButton();
+			string overdueTasksColor = prefs.Get (Preferences.OverdueTaskTextColor);
+			Gdk.Color overdueColor = new Gdk.Color();
+			Gdk.Color.Parse (overdueTasksColor, ref overdueColor);
+			btnChangeOverdueTaskColor.Color = overdueColor;
+			
+			btnChangeOverdueTaskColor.ColorSet += OnBtnChangeOverdueTaskColorColorSet;
+			btnChangeOverdueTaskColor.Show();
+						
+			hbox2.PackStart (lblOverdueTaskColor, false, false, 0);
+			hbox2.PackStart (txtOverdueTaskColor, false, false, 0);
+			hbox2.PackStart (btnChangeOverdueTaskColor, false, false, 0);
+			hbox2.Show ();
+			
+			sectionVBox.PackStart (hbox, false, false, 0);
+			sectionVBox.PackStart (hbox2, false, false, 0);
+			sectionVBox.Show();
+			
+			vbox.PackStart (sectionVBox, false, false, 0);
+			
+			return vbox;
+		}
+		
 		private Gtk.Widget MakeGeneralPage ()
 		{
 			VBox vbox = new VBox (false, 6);
@@ -292,7 +384,29 @@
 					showCompletedTasksCheckButton.Active);
 			};
 		}
+
+		private void OnBtnChangeTodaysTaskColorColorSet(object sender, EventArgs args) 
+		{
+			txtTodaysTaskColor.Text = Utilities.ColorGetHex(btnChangeTodaysTaskColor.Color).ToUpper();
+		}
 		
+		private void OnTxtTodaysTaskColorChanged (object sender, EventArgs args)
+		{			
+			// Save the user preference
+			Application.Preferences.Set (Preferences.TodayTaskTextColor, ((Entry)sender).Text);
+		}
+		
+		private void OnBtnChangeOverdueTaskColorColorSet(object sender, EventArgs args) 
+		{
+			txtOverdueTaskColor.Text = Utilities.ColorGetHex(btnChangeOverdueTaskColor.Color).ToUpper();
+		}
+		
+		private void OnTxtOverdueTaskColorChanged (object sender, EventArgs args)
+		{
+			// Save the user preference
+			Application.Preferences.Set (Preferences.OverdueTaskTextColor, ((Entry)sender).Text);	
+		}
+		
 		private void OnBackendComboBoxChanged (object sender, EventArgs args)
 		{
 			if (selectedBackend >= 0) {
Index: src/Preferences.cs
===================================================================
--- src/Preferences.cs	(Revision 190)
+++ src/Preferences.cs	(Arbeitskopie)
@@ -48,7 +48,9 @@
 		public const string InactivateTimeoutKey = "InactivateTimeout";
 		public const string SelectedCategoryKey = "SelectedCategory";
 		public const string ParseDateEnabledKey = "ParseDateEnabled";
-		
+		public const string TodayTaskTextColor = "TodayTaskTextColor";
+		public const string OverdueTaskTextColor = "OverdueTaskTextColor";
+				
 		/// <summary>
 		/// A list of category names to show in the TaskWindow when the "All"
 		/// category is selected.
@@ -105,6 +107,10 @@
 			switch (settingKey) {
 			case ParseDateEnabledKey:
 				return true.ToString ();
+			case TodayTaskTextColor:
+		        return "#181AB7";
+			case OverdueTaskTextColor:
+		        return "#EB3320";
 			default:
 				return null;
 			}
