diff --git flag.inc flag.inc
index 90210d5..ddbfe35 100644
--- flag.inc
+++ flag.inc
@@ -987,6 +987,25 @@ class flag_flag {
   }
 
   /**
+   * Reverts an overriden default flag to its original state.
+   *
+   * Note that $this isn't altered. To see the reverted flag you'll have to
+   * call flag_get_flag($this->name) again.
+   */
+  function revert() {
+    if ($this->fid) {
+      $default_flags = flag_get_default_flags(TRUE);
+      if (isset($default_flags[$this->name])) {
+        // We've found the flag; overwrite it with the code version.
+        $flag = clone($default_flags[$this->name]);
+        $flag->fid = $this->fid;
+        $flag->save();
+      }
+      flag_get_flags(NULL, NULL, NULL, TRUE);
+    }
+  }
+
+  /**
    * Disable a flag provided by a module.
    */
   function disable() {
diff --git includes/flag.features.inc includes/flag.features.inc
index a08ce8b..339a97e 100644
--- includes/flag.features.inc
+++ includes/flag.features.inc
@@ -65,7 +65,7 @@ function flag_features_revert($module = NULL) {
     // Delete flags that are defined in code.
     foreach ($default_flags as $default_flag) {
       $current_flag = flag_get_flag($default_flag['name']);
-      $current_flag->delete();
+      $current_flag->revert();
     }
     _flag_clear_cache();
   }
