diff --git a/src/plugins/gui/file_manager.ml b/src/plugins/gui/file_manager.ml
index cec5d5568bcd4f32b511967fce6ddd4cba9d595a..dbb6c0b960199bcf6a6d91fbecc186e351d2f07a 100644
--- a/src/plugins/gui/file_manager.ml
+++ b/src/plugins/gui/file_manager.ml
@@ -171,6 +171,30 @@ let preferences (host_window: Design.main_window_extension_points) =
   (* Save and cancel buttons. *)
   let hbox_buttons = dialog#action_area in
   let packing = hbox_buttons#pack ~expand:true ~padding:3 in
+
+  let reset_box = GPack.vbox ~spacing:5 ~border_width:10 () in
+  main_box#pack reset_box#coerce;
+  let reset_packing = reset_box#pack in
+  let reset_button = GButton.button
+      ~label:"Reset GUI to factory defaults" ~packing:reset_packing ()
+  in
+  ignore (reset_button#event#connect#button_release
+            ~callback:(fun _ ->
+                let answer =
+                  GToolbox.question_box
+                    ~title:"Reset GUI to factory defaults?"
+                    ~buttons:["Reset GUI" ; "Cancel"] ~default:2
+                    "This will restore all GUI-related settings \
+                     to factory defaults,\n\
+                     including panel sizes and preferences."
+                in
+                if answer = 1 then begin
+                  Gtk_helper.Configuration.reset ();
+                  GToolbox.message_box
+                    ~title:"GUI reset"
+                    "GUI reset will take place after restarting Frama-C.";
+                end; false));
+
   let wb_ok = GButton.button ~label:"Save" ~packing () in
   let wb_cancel = GButton.button ~label:"Cancel" ~packing () in
   wb_ok#grab_default ();
diff --git a/src/plugins/gui/gtk_helper.ml b/src/plugins/gui/gtk_helper.ml
index 24f8b32bd9b57253fcc8bffd85fe726c751c6ad8..0580f8f605498a7341dd3e77ec5b1106670f7ced 100644
--- a/src/plugins/gui/gtk_helper.ml
+++ b/src/plugins/gui/gtk_helper.ml
@@ -51,6 +51,8 @@ module Configuration = struct
     with Gui_parameters.Config.No_dir -> ""
   let load () = loadConfiguration (configuration_file ())
   let save () = saveConfiguration (configuration_file ())
+  let reset () = Extlib.safe_remove (configuration_file ());
+    loadConfiguration (configuration_file ())
   let () = Cmdline.at_normal_exit save
 
   let set = setConfiguration
diff --git a/src/plugins/gui/gtk_helper.mli b/src/plugins/gui/gtk_helper.mli
index c07246254458ee9ab58d18160fa79967b68dd951..13d7715a7e7d0f5e30781cc71be1a312ffa44295 100644
--- a/src/plugins/gui/gtk_helper.mli
+++ b/src/plugins/gui/gtk_helper.mli
@@ -74,6 +74,7 @@ module Configuration: sig
 
   val load : unit -> unit
   val save : unit -> unit
+  val reset: unit -> unit
 
   val set : string -> configData -> unit
   (** Set a configuration element, with a key. Overwrites the previous values *)