diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 059232f0a..9b4651a68 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -59,6 +59,7 @@ struct _GeditViewFrame
 	GeditView *view;
 	GeditViewCentering *view_centering;
 	GtkFrame *map_frame;
+	GtkSourceMap *map;
 
 	SearchMode search_mode;
 
@@ -94,10 +95,20 @@ struct _GeditViewFrame
 	 */
 	gchar *search_text;
 	gchar *old_search_text;
+
+	guint show_map : 1;
+};
+
+enum {
+	PROP_0,
+	PROP_SHOW_MAP,
+	N_PROPS
 };
 
 G_DEFINE_TYPE (GeditViewFrame, gedit_view_frame, GTK_TYPE_OVERLAY)
 
+static GParamSpec *properties [N_PROPS];
+
 static GeditDocument *
 get_document (GeditViewFrame *frame)
 {
@@ -1422,6 +1433,42 @@ start_interactive_search_real (GeditViewFrame *frame,
 	install_update_entry_tag_idle (frame);
 }
 
+static void
+gedit_view_frame_get_property(GObject    *object,
+			      guint       prop_id,
+			      GValue     *value,
+			      GParamSpec *pspec)
+{
+	GeditViewFrame *frame = GEDIT_VIEW_FRAME(object);
+
+	switch (prop_id) {
+		case PROP_SHOW_MAP:
+			g_value_set_boolean(value, gedit_view_frame_get_show_map(frame));
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+gedit_view_frame_set_property(GObject      *object,
+			      guint         prop_id,
+			      const GValue *value,
+			      GParamSpec   *pspec)
+{
+	GeditViewFrame *frame = GEDIT_VIEW_FRAME(object);
+
+	switch (prop_id) {
+		case PROP_SHOW_MAP:
+			gedit_view_frame_set_show_map(frame, g_value_get_boolean(value));
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
 static void
 gedit_view_frame_class_init (GeditViewFrameClass *klass)
 {
@@ -1430,6 +1477,16 @@ gedit_view_frame_class_init (GeditViewFrameClass *klass)
 
 	object_class->dispose = gedit_view_frame_dispose;
 	object_class->finalize = gedit_view_frame_finalize;
+	object_class->get_property = gedit_view_frame_get_property;
+	object_class->set_property = gedit_view_frame_set_property;
+
+	properties [PROP_SHOW_MAP] =
+			g_param_spec_boolean ("show-map",
+					      "Show Map",
+					      "If the overview map should be shown",
+					      FALSE,
+					      (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+	g_object_class_install_properties (object_class, N_PROPS, properties);
 
 	/* Bind class to template */
 	gtk_widget_class_set_template_from_resource (widget_class,
@@ -1437,6 +1494,7 @@ gedit_view_frame_class_init (GeditViewFrameClass *klass)
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, view);
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, view_centering);
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, map_frame);
+	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, map);
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, revealer);
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, search_entry);
 	gtk_widget_class_bind_template_child (widget_class, GeditViewFrame, go_up_button);
@@ -1467,9 +1525,9 @@ gedit_view_frame_init (GeditViewFrame *frame)
 	frame->editor_settings = g_settings_new ("org.gnome.gedit.preferences.editor");
 	g_settings_bind (frame->editor_settings,
 	                 GEDIT_SETTINGS_DISPLAY_OVERVIEW_MAP,
-	                 frame->map_frame,
-	                 "visible",
-	                 G_SETTINGS_BIND_GET | G_SETTINGS_BIND_NO_SENSITIVITY);
+	                 frame,
+	                 "show-map",
+			 G_SETTINGS_BIND_GET | G_SETTINGS_BIND_NO_SENSITIVITY);
 
 	gtk_widget_override_background_color (GTK_WIDGET (frame), 0, &transparent);
 
@@ -1617,3 +1675,22 @@ gedit_view_frame_clear_search (GeditViewFrame *frame)
 
 	gtk_widget_grab_focus (GTK_WIDGET (frame->view));
 }
+
+gboolean
+gedit_view_frame_get_show_map (GeditViewFrame *frame)
+{
+	g_return_val_if_fail (GEDIT_IS_VIEW_FRAME (frame), FALSE);
+
+	return frame->show_map;
+}
+
+void
+gedit_view_frame_set_show_map (GeditViewFrame *frame,
+			       gboolean        show_map)
+{
+	g_return_if_fail (GEDIT_IS_VIEW_FRAME (frame));
+
+	gtk_source_map_set_view(frame->map, show_map ? GTK_SOURCE_VIEW(frame->view) : NULL);
+	gtk_widget_set_visible (GTK_WIDGET (frame->map_frame), show_map);
+
+}
diff --git a/gedit/gedit-view-frame.h b/gedit/gedit-view-frame.h
index d2e550840..60c6431fd 100644
--- a/gedit/gedit-view-frame.h
+++ b/gedit/gedit-view-frame.h
@@ -44,6 +44,11 @@ void		 gedit_view_frame_popup_goto_line	(GeditViewFrame *frame);
 
 void		 gedit_view_frame_clear_search		(GeditViewFrame *frame);
 
+void		 gedit_view_frame_set_show_map		(GeditViewFrame *frame,
+							 gboolean show_map);
+
+gboolean	 gedit_view_frame_get_show_map		(GeditViewFrame *frame);
+
 G_END_DECLS
 
 #endif /* GEDIT_VIEW_FRAME_H */
diff --git a/gedit/resources/ui/gedit-view-frame.ui b/gedit/resources/ui/gedit-view-frame.ui
index b61d82c3a..d53b70816 100644
--- a/gedit/resources/ui/gedit-view-frame.ui
+++ b/gedit/resources/ui/gedit-view-frame.ui
@@ -31,7 +31,6 @@
             <child>
               <object class="GtkSourceMap" id="map">
                 <property name="visible">True</property>
-                <property name="view">view</property>
               </object>
             </child>
           </object>
