diff --git a/RecipeGeneratorWindow.cs b/RecipeGeneratorWindow.cs
--- a/RecipeGeneratorWindow.cs
+++ b/RecipeGeneratorWindow.cs
@@ -413,12 +413,16 @@ namespace DesertPaintLab
                 }
                 if (!exists)
                 {
-                    //Console.WriteLine("Add new recipe for {0}", args.Color);
+                    //Console.WriteLine("Add new recipe for {0}", recipeColor);
                     //    bool isMissingReactions = args.Recipe.CheckMissingReactions(ref missingReactions);
                     //    string missingReactionLabel = isMissingReactions ? "X" : "";
                     colorStore.AppendValues(recipeColor); // , missingReactionLabel);
                     countLabel.Text = String.Format("{0} / {1}", profile.RecipeCount+1, Palette.Count);
                 }
+                //else
+                //{
+                //    Console.WriteLine("Updated recipe for {0}", recipeColor);
+                //}
                 profile.SetRecipe(recipe);
     
                 long progressTime = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
@@ -428,6 +432,16 @@ namespace DesertPaintLab
                     profile.SaveRecipes();
                     lastProfileSave = progressTime;
                 }
+                Gtk.TreeModel model;
+                Gtk.TreeSelection selection = recipeList.Selection;
+                if ((selection != null) && selection.GetSelected(out model, out iter))
+                {
+                    string colorName = (string)colorStore.GetValue(iter, 0);
+                    if (colorName.Equals(recipeColor))
+                    {
+                        ShowColor(recipe);
+                    }
+                }
             }
         }
 
@@ -472,6 +486,21 @@ namespace DesertPaintLab
             notifyProgress.WakeupMain();
         }
 
+        private void ShowColor(PaintRecipe recipe)
+        {
+            Gtk.ListStore store = (Gtk.ListStore)recipeIngredientsView.Model;
+            store.Clear();
+            if (recipe.CheckMissingReactions(ref missingReactions))
+            {
+                statusLabel.Text = "WARNING: This recipe includes reactions that have not yet been recorded.";
+            }
+            foreach (PaintRecipe.RecipeIngredient ingredient in recipe.Ingredients)
+            {
+                store.AppendValues(ingredient.quantity.ToString(), ingredient.name);
+            }
+            paintSwatch.Color = recipe.ReactedColor;
+        }
+
         protected void OnColorSelected(object o, EventArgs args)
         {
             Gtk.TreeModel model;
@@ -483,18 +512,8 @@ namespace DesertPaintLab
                 PaintRecipe recipe;
                 if (profile.Recipes.TryGetValue(colorName, out recipe))
                 {
-                    Gtk.ListStore store = (Gtk.ListStore)recipeIngredientsView.Model;
-                    store.Clear();
-                    if (recipe.CheckMissingReactions(ref missingReactions))
-                    {
-                        statusLabel.Text = "WARNING: This recipe includes reactions that have not yet been recorded.";
-                    }
-                    foreach (PaintRecipe.RecipeIngredient ingredient in recipe.Ingredients)
-                    {
-                        store.AppendValues(ingredient.quantity.ToString(), ingredient.name);
-                    }
+                    ShowColor(recipe);
                 }
-                paintSwatch.Color = recipe.ReactedColor;
             }
         }