--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -929,10 +929,12 @@ dbus_method_available (gchar *name,
   else
     {
       if (error->domain == G_DBUS_ERROR &&
-          error->code == G_DBUS_ERROR_SERVICE_UNKNOWN)
+          (error->code == G_DBUS_ERROR_SERVICE_UNKNOWN ||
+           error->code == G_DBUS_ERROR_UNKNOWN_METHOD))
         result = FALSE;
       else
         result = TRUE;
+      g_error_free (error);
     }
 
   return result;
@@ -1742,6 +1744,7 @@ new_printer_add_button_cb (GtkButton *button,
           ppd_file_t  *ppd_file = NULL;
           gchar       *value = NULL;
           const gchar *paper_size;
+          gboolean     printer_add_option_available;
 
           ppd_file_name = cupsGetPPD (pp->devices[device_id].display_name);
 
@@ -1779,15 +1782,29 @@ new_printer_add_button_cb (GtkButton *button,
                   g_free (commands_lowercase);
                 }
 
+              printer_add_option_available = dbus_method_available (MECHANISM_BUS,
+                                                                    "/",
+                                                                    MECHANISM_BUS,
+                                                                    "PrinterAddOption");
 
               /* Set default PaperSize according to the locale */
               paper_size = gtk_paper_size_get_default ();
               if (g_str_equal (paper_size, GTK_PAPER_NAME_LETTER))
+                {
+                  if (printer_add_option_available)
+                    value = g_strdup ("na-letter");
+                  else
                 paper_size = "Letter";
+                }
+              else
+                {
+                  if (printer_add_option_available)
+                    value = g_strdup ("iso-a4");
               else
                 paper_size = "A4";
+                }
 
-              if (ppd_file_name)
+              if (ppd_file_name && !printer_add_option_available)
                 {
                   ppd_file = ppdOpenFile (ppd_file_name);
                   if (ppd_file)
@@ -1821,6 +1838,22 @@ new_printer_add_button_cb (GtkButton *button,
                   g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("as"));
                   g_variant_builder_add (&array_builder, "s", value);
 
+                  if (printer_add_option_available)
+                    output = g_dbus_connection_call_sync (bus,
+                                                          MECHANISM_BUS,
+                                                          "/",
+                                                          MECHANISM_BUS,
+                                                          "PrinterAddOption",
+                                                          g_variant_new ("(ssas)",
+                                                                         pp->devices[device_id].display_name,
+                                                                         "media",
+                                                                         &array_builder),
+                                                          G_VARIANT_TYPE ("(s)"),
+                                                          G_DBUS_CALL_FLAGS_NONE,
+                                                          -1,
+                                                          NULL,
+                                                          &error);
+                  else
                   output = g_dbus_connection_call_sync (bus,
                                                         MECHANISM_BUS,
                                                         "/",
@@ -1835,6 +1868,7 @@ new_printer_add_button_cb (GtkButton *button,
                                                         -1,
                                                         NULL,
                                                         &error);
+
                   g_object_unref (bus);
 
                   if (output)
