diff --git a/src/g_bang.c b/src/g_bang.c
index 018ae116dd23043c3fcaeed507e3d62e83aca9dc..6beba307011643c2d8dddb485663edef47e48f78 100644
--- a/src/g_bang.c
+++ b/src/g_bang.c
@@ -587,8 +587,8 @@ static void bng_properties(t_gobj *z, t_glist *owner)
             ----------dimensions(pix):----------- %d %d size: 0 0 empty \
             --------flash-time(ms)(ms):--------- %d intrrpt: %d hold: %d \
             %d empty empty %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE,
diff --git a/src/g_hdial.c b/src/g_hdial.c
index 6b9870708e331af47a06b9991a744fc4395db9eb..1d32a203e641ebc61096d262c1fcd341ef6c8e51 100644
--- a/src/g_hdial.c
+++ b/src/g_hdial.c
@@ -600,8 +600,8 @@ static void hradio_properties(t_gobj *z, t_glist *owner)
             ----------dimensions(pix):----------- %d %d size: 0 0 empty \
             empty 0.0 empty 0.0 empty %d \
             %d new-only new&old %d %d number: %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE,
diff --git a/src/g_hslider.c b/src/g_hslider.c
index 282265ff2909eaddeb1c055dbc4d075839ca33bc..2153439a4f3bc35eeec263a97b4526f0f73fdd88 100644
--- a/src/g_hslider.c
+++ b/src/g_hslider.c
@@ -630,8 +630,8 @@ static void hslider_properties(t_gobj *z, t_glist *owner)
             --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \
             -----------output-range:----------- %g left: %g right: %g \
             %d lin log %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_SL_MINSIZE, x->x_gui.x_h, IEM_GUI_MINSIZE,
diff --git a/src/g_mycanvas.c b/src/g_mycanvas.c
index 5f3b8f53c233554fd4667211e819c433f31a2cc7..4f6a76c47fd426fb53141024ca1686b5505aa989 100644
--- a/src/g_mycanvas.c
+++ b/src/g_mycanvas.c
@@ -460,8 +460,8 @@ static void my_canvas_properties(t_gobj *z, t_glist *owner)
             ------selectable_dimensions(pix):------ %d %d size: 0.0 0.0 empty \
             ------visible_rectangle(pix)(pix):------ %d width: %d height: %d \
             %d empty empty %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, 1,
diff --git a/src/g_numbox.c b/src/g_numbox.c
index 45159d6711e404386ed1b1aca42d96a8ece87fa9..27c115170543a953d1b0f171c59e4abbdaac4094 100644
--- a/src/g_numbox.c
+++ b/src/g_numbox.c
@@ -845,8 +845,8 @@ static void my_numbox_properties(t_gobj *z, t_glist *owner)
             -------dimensions(digits)(pix):------- %d %d width: %d %d height: \
             -----------output-range:----------- %g min: %g max: %d \
             %d lin log %d %d log-height: %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, 1, x->x_gui.x_h, 8,
diff --git a/src/g_toggle.c b/src/g_toggle.c
index 3db86241a082a80a8ee7f7d11417b00f6a3cd30f..2641d9cae5a17287b36dfe0b331f96d335a0d86e 100644
--- a/src/g_toggle.c
+++ b/src/g_toggle.c
@@ -587,8 +587,8 @@ static void toggle_properties(t_gobj *z, t_glist *owner)
             ----------dimensions(pix):----------- %d %d size: 0 0 empty \
             -----------non-zero-value:----------- %g value: 0.0 empty %g \
             -1 lin log %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE,
diff --git a/src/g_vdial.c b/src/g_vdial.c
index f460c8e139a4618d8d839a71113e032d498e88ff..c996c87c8cf9b61402858aa494770b71b25e7ab2 100644
--- a/src/g_vdial.c
+++ b/src/g_vdial.c
@@ -602,8 +602,8 @@ static void vradio_properties(t_gobj *z, t_glist *owner)
             ----------dimensions(pix):----------- %d %d size: 0 0 empty \
             empty 0.0 empty 0.0 empty %d \
             %d new-only new&old %d %d number: %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE,
diff --git a/src/g_vslider.c b/src/g_vslider.c
index f41258e31fb8b810e45a7463425d2a3bbd9b0195..0c499b6e6c0fbe9eeee23dcf5cb7f80d10e9de7b 100644
--- a/src/g_vslider.c
+++ b/src/g_vslider.c
@@ -641,8 +641,8 @@ static void vslider_properties(t_gobj *z, t_glist *owner)
             --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \
             -----------output-range:----------- %g bottom: %g top: %d \
             %d lin log %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE, x->x_gui.x_h, IEM_SL_MINSIZE,
diff --git a/src/g_vumeter.c b/src/g_vumeter.c
index 52ecb10bba218081f49d42a63c3c1473b08c02f5..945580c90e45a65ee19cf55f7faf36ef84a314ad 100644
--- a/src/g_vumeter.c
+++ b/src/g_vumeter.c
@@ -861,8 +861,8 @@ static void vu_properties(t_gobj *z, t_glist *owner)
             --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \
             empty 0.0 empty 0.0 empty %d \
             %d no_scale scale %d %d empty %d \
-            %s %s \
-            %s %d %d \
+            {%s} {%s} \
+            {%s} %d %d \
             %d %d \
             %d %d %d\n",
             x->x_gui.x_w, IEM_GUI_MINSIZE, x->x_gui.x_h, IEM_VU_STEPS*IEM_VU_MINSIZE,
diff --git a/src/m_binbuf.c b/src/m_binbuf.c
index e1926b67e6a751f40d9f7f01924a917142a60660..313164b75954f003ec0141e5322733ce84e39c50 100644
--- a/src/m_binbuf.c
+++ b/src/m_binbuf.c
@@ -21,6 +21,29 @@
 #include <string.h>
 #include <stdarg.h>
 
+/* escape characters for saving */
+static char* strnescape(char *dest, const char *src, size_t outlen)
+{
+    int ptin = 0;
+    unsigned ptout = 0;
+    for(; ptout < outlen; ptin++, ptout++)
+    {
+        int c = src[ptin];
+        if (c == ' ' || c=='\t')
+            dest[ptout++] = '\\';
+        dest[ptout] = src[ptin];
+        if (c==0) break;
+    }
+
+    if(ptout < outlen)
+        dest[ptout]=0;
+    else
+        dest[outlen-1]=0;
+
+    return dest;
+}
+
+
 struct _binbuf
 {
     int b_n;
@@ -1000,7 +1023,9 @@ int binbuf_write(t_binbuf *x, char *filename, char *dir, int crflag)
             bp > sbuf && bp[-1] == ' ') bp--;
         if (!crflag || ap->a_type != A_SEMI)
         {
-            atom_string(ap, bp, (ep-bp)-2);
+            char bp2[WBUFSIZE];
+            atom_string(ap, bp2, WBUFSIZE);
+            strnescape(bp, bp2, (ep-bp)-2);
             length = strlen(bp);
             bp += length;
             ncolumn += length;