diff --git a/packages/darwin_app/org.puredata.pd-l2ork.default.plist b/packages/darwin_app/org.puredata.pd-l2ork.default.plist
index 094c9afe7e5686581e4c46fb4138af1251afd7da..3c4d0d2fcb8e567175c1ec09ed1f19d71c9a944d 100644
--- a/packages/darwin_app/org.puredata.pd-l2ork.default.plist
+++ b/packages/darwin_app/org.puredata.pd-l2ork.default.plist
@@ -5,7 +5,7 @@
 	<key>defeatrt</key>
 	<string>0</string>
 	<key>flags</key>
-	<string>-helppath ~/Library/Pd -helppath /Library/Pd</string>
+	<string>-helppath ~/Library/Pd-l2ork -helppath /Library/Pd-l2ork</string>
 	<key>loadlib1</key>
 	<string>libdir</string>
 	<key>loadlib2</key>
diff --git a/pd/src/s_file.c b/pd/src/s_file.c
index 3ecbcc9be998bbc16b4a4308d46a29c9377c2c5c..7c54ee3bd2d72ca20ce621744668b1c9fe1e6943 100644
--- a/pd/src/s_file.c
+++ b/pd/src/s_file.c
@@ -259,15 +259,14 @@ static char *sys_prefbuf;
 #define BUFSZ 4096
 
 // AG: We have to go to some lengths here since 'defaults read' doesn't
-// properly deal with UTF-8 characters in the prefs data. 'defaults export'
-// does the trick, however, so we use that to read the entire prefs data at
-// once from a pipe, using plutil to convert the resulting data to JSON format
-// which can then be translated to Pd's Unix preferences file format using
-// sed. The result is stored in a character buffer for efficient access. From
-// there we can retrieve the individual keys in the same fashion as on Unix. A
-// welcome side effect is that loading the prefs is *much* faster now than
-// with the previous method which invoked 'defaults read' on each individual
-// key.
+// properly deal with UTF-8 characters in the prefs data. 'plutil' does the
+// trick, however, so we use that to read the entire prefs data at once from a
+// pipe, converting it to JSON format which can then be translated to Pd's
+// Unix preferences file format using sed. The result is stored in a character
+// buffer for efficient access. From there we can retrieve the individual keys
+// in the same fashion as on Unix. A welcome side effect is that loading the
+// prefs is *much* faster now than with the previous method which invoked
+// 'defaults read' on each individual key.
 
 static void sys_initloadpreferences(void)
 {
@@ -275,8 +274,9 @@ static void sys_initloadpreferences(void)
     FILE *fp;
     size_t sz, n = 0;
     int res;
-    char default_prefs[FILENAME_MAX]; // default prefs embedded in the package
+    char default_prefs[FILENAME_MAX];  // default prefs embedded in the package
     char embedded_prefs[FILENAME_MAX]; // overrides others for standalone app
+    char user_prefs[FILENAME_MAX];     // user preferences
     char embedded_prefs_file[FILENAME_MAX];
     char user_prefs_file[FILENAME_MAX];
     const char *prefs, *homedir = getenv("HOME");
@@ -292,9 +292,10 @@ static void sys_initloadpreferences(void)
     snprintf(embedded_prefs, FILENAME_MAX,
 	     "%s/../org.puredata.pd-l2ork",
              sys_libdir->s_name);
+    snprintf(user_prefs, FILENAME_MAX,
+             "%s/Library/Preferences/org.puredata.pd-l2ork", homedir);
     snprintf(embedded_prefs_file, FILENAME_MAX, "%s.plist", embedded_prefs);
-    snprintf(user_prefs_file, FILENAME_MAX,
-             "%s/Library/Preferences/org.puredata.pd-l2ork.plist", homedir);
+    snprintf(user_prefs_file, FILENAME_MAX, "%s.plist", user_prefs);
     if (stat(embedded_prefs_file, &statbuf) == 0) {
       // Read from and write to the embedded prefs (standalone app).
       prefs = embedded_prefs;
@@ -302,17 +303,16 @@ static void sys_initloadpreferences(void)
     } else if (stat(user_prefs_file, &statbuf) == 0) {
       // Read from and write to the user prefs.
       prefs = current_prefs;
-      strcpy(current_prefs, "org.puredata.pd-l2ork");
+      strncpy(current_prefs, user_prefs, FILENAME_MAX);
     } else {
       // Read from the package defaults and write to the user prefs.
       prefs = default_prefs;
-      strcpy(current_prefs, "org.puredata.pd-l2ork");
+      strncpy(current_prefs, user_prefs, FILENAME_MAX);
     }
     // This looks complicated, but is rather straightforward. The individual
     // stages of the pipe are:
-    // 1. defaults export: grab our defaults in XML format
-    // 2. plutil -convert json -r -o - -: convert to JSON
-    // 3. sed: a few edits remove the extra JSON bits (curly braces, string
+    // 1. plutil -convert json -r -o -: grab our defaults and convert to JSON
+    // 2. sed: a few edits remove the extra JSON bits (curly braces, string
     //    quotes, unwanted whitespace and character escapes) and produce
     //    Pd-L2Ork's Unix prefs format, i.e.:
     // JSON                        -->            Unix prefs
@@ -322,8 +322,7 @@ static void sys_initloadpreferences(void)
     //   "path1" : "\/System\/Library\/Fonts"     path1: /System/Library/Fonts
     // }
     snprintf(cmdbuf, MAXPDSTRING,
-        "defaults export %s - "
-        "| plutil -convert json -r -o - - "
+        "plutil -convert json -r -o - %s.plist "
         "| sed -E "
           "-e 's/[{}]//g' "
           "-e 's/^ *\"(([^\"]|\\\\.)*)\" *: *\"(([^\"]|\\\\.)*)\".*/\\1: \\3/' "