diff --git a/src/cddb_dialog.c b/src/cddb_dialog.c
index 26ce915..986ce88 100644
--- a/src/cddb_dialog.c
+++ b/src/cddb_dialog.c
@@ -2781,6 +2781,8 @@ init_set_field_check (GtkWidget *widget)
 {
     g_object_set_data (G_OBJECT (widget), "flags-type",
                        GSIZE_TO_POINTER (ET_TYPE_CDDB_SET_FIELD));
+    g_object_set_data (G_OBJECT (widget), "flags-key",
+                       (void *)"cddb-set-fields");
     g_settings_bind_with_mapping (MainSettings, "cddb-set-fields", widget,
                                   "active", G_SETTINGS_BIND_DEFAULT,
                                   et_settings_flags_toggle_get,
diff --git a/src/scan_dialog.c b/src/scan_dialog.c
index 87b6917..c17c23e 100644
--- a/src/scan_dialog.c
+++ b/src/scan_dialog.c
@@ -2298,6 +2298,8 @@ init_process_field_check (GtkWidget *widget)
 {
     g_object_set_data (G_OBJECT (widget), "flags-type",
                        GSIZE_TO_POINTER (ET_TYPE_PROCESS_FIELD));
+    g_object_set_data (G_OBJECT (widget), "flags-key",
+                       (void *)"process-fields");
     g_settings_bind_with_mapping (MainSettings, "process-fields", widget,
                                   "active", G_SETTINGS_BIND_DEFAULT,
                                   et_settings_flags_toggle_get,
diff --git a/src/setting.c b/src/setting.c
index cad24ff..9d04439 100644
--- a/src/setting.c
+++ b/src/setting.c
@@ -760,7 +760,8 @@ et_settings_flags_toggle_set (const GValue *value,
     GFlagsValue *flags_value;
     guint mask;
     GVariantBuilder builder;
-    guint flags = g_settings_get_flags (MainSettings, "process-fields");
+    const char *flags_key;
+    guint flags;
 
     g_return_val_if_fail (user_data != NULL, NULL);
 
@@ -779,6 +780,9 @@ et_settings_flags_toggle_set (const GValue *value,
         return NULL;
     }
 
+    flags_key = g_object_get_data (G_OBJECT (user_data), "flags-key");
+    flags = g_settings_get_flags (MainSettings, flags_key);
+
     if (g_value_get_boolean (value))
     {
         flags |= flags_value->value;
