diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp
index 9b84403a56d97d78fa86facafd9272fb9ecabed9..ac63a3941e61fe8a9d9ea53d8609165d0f951b8e 100644
--- a/src/plugins/cppeditor/cppquickfix.cpp
+++ b/src/plugins/cppeditor/cppquickfix.cpp
@@ -759,7 +759,7 @@ class WrapStringLiteral: public QuickFixOperation
 {
 public:
     WrapStringLiteral()
-        : stringLiteral(0)
+        : stringLiteral(0), isObjCStringLiteral(false)
     {}
 
     virtual QString description() const
@@ -778,6 +778,8 @@ public:
         if (!stringLiteral)
             return -1;
 
+        isObjCStringLiteral = charAt(startOf(stringLiteral)) == QLatin1Char('@');
+
         // check if it is already wrapped in QLatin1String or -Literal
         if (index-2 < 0)
             return index;
@@ -805,12 +807,20 @@ public:
 
     virtual void createChangeSet()
     {
-        insert(startOf(stringLiteral), "QLatin1String(");
+        const int startPos = startOf(stringLiteral);
+        const QLatin1String replacement("QLatin1String(");
+
+        if (isObjCStringLiteral)
+            replace(startPos, startPos + 1, replacement);
+        else
+            insert(startPos, replacement);
+
         insert(endOf(stringLiteral), ")");
     }
 
 private:
     StringLiteralAST *stringLiteral;
+    bool isObjCStringLiteral;
 };
 
 } // end of anonymous namespace
@@ -1040,6 +1050,11 @@ QString QuickFixOperation::textOf(const AST *ast) const
     return textOf(startOf(ast), endOf(ast));
 }
 
+QChar QuickFixOperation::charAt(int offset) const
+{
+    return textOf(offset, offset + 1).at(0);
+}
+
 void QuickFixOperation::apply()
 {
     Range range;
diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h
index e7f2b1a8962f853cc015a1bddaf71037b24399a2..77fcb20cfbf6b450230f9cc3c9915e7e17fd1da8 100644
--- a/src/plugins/cppeditor/cppquickfix.h
+++ b/src/plugins/cppeditor/cppquickfix.h
@@ -116,6 +116,7 @@ protected:
 
     QString textOf(int firstOffset, int lastOffset) const;
     QString textOf(const CPlusPlus::AST *ast) const;
+    QChar charAt(int offset) const;
 
     struct Range {
         Range() {}