diff --git a/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
index 023debed9f11334efe361583528b3e0a97b651d6..8602078e3f0da713d15824d451a206e5c74d50e3 100644
--- a/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
+++ b/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
@@ -97,7 +97,7 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept
             return stringValue;
 
         default:
-            return QString(QLatin1String("\"%1\"")).arg(stringValue);
+            return QString(QLatin1String("\"%1\"")).arg(escape(stringValue));
         }
     } else {
         Q_ASSERT("Unknown property type");
@@ -176,3 +176,16 @@ QString QmlTextGenerator::propertyToQml(const AbstractProperty &property, int in
 
     return result;
 }
+
+QString QmlTextGenerator::escape(const QString &value)
+{
+    QString result = value;
+
+    result.replace(QLatin1String("\\"), QLatin1String("\\\\"));
+    result.replace(QLatin1String("\""), QLatin1String("\\\""));
+    result.replace(QLatin1String("\t"), QLatin1String("\\\t"));
+    result.replace(QLatin1String("\r"), QLatin1String("\\\r"));
+    result.replace(QLatin1String("\n"), QLatin1String("\\\n"));
+
+    return result;
+}
diff --git a/src/plugins/qmldesigner/core/model/qmltextgenerator.h b/src/plugins/qmldesigner/core/model/qmltextgenerator.h
index 3103581af229a822c7e4ba6731a443d21739dbab..84b03bc1961b732b9a041ed991c9fd602645f20c 100644
--- a/src/plugins/qmldesigner/core/model/qmltextgenerator.h
+++ b/src/plugins/qmldesigner/core/model/qmltextgenerator.h
@@ -56,6 +56,8 @@ private:
     QString propertiesToQml(const ModelNode &node, int indentDepth) const;
     QString propertyToQml(const AbstractProperty &property, int indentDepth) const;
 
+    static QString escape(const QString &value);
+
 private:
     QStringList m_propertyOrder;
     int m_indentDepth;