diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index d62bf8efa12e578b90263f24964c7a09899d0985..bde9637ea03148ff25f0aaaf4be9b08c823cc6f4 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -669,8 +669,9 @@ void QQuickTextPrivate::setupCustomLineGeometry(QTextLine &line, qreal &height,
     textLine->setHeight(0);
     textLine->setLineOffset(lineOffset);
 
-    // use the text item's width by default if it has one and wrap is on
-    if (q->widthValid() && q->wrapMode() != QQuickText::NoWrap)
+    // use the text item's width by default if it has one and wrap is on or text must be aligned
+    if (q->widthValid() && (q->wrapMode() != QQuickText::NoWrap ||
+                            q->effectiveHAlign() != QQuickText::AlignLeft))
         textLine->setWidth(q->width());
     else
         textLine->setWidth(INT_MAX);
diff --git a/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml b/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml
new file mode 100644
index 0000000000000000000000000000000000000000..6349f7a644911fc2b80507db3d196469e1fa2f03
--- /dev/null
+++ b/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+    id: main
+    width: 200; height: 200
+
+    Text {
+        id: myText
+        objectName: "myText"
+        width: parent.width
+        font.family: "__Qt__Box__Engine__"
+        font.pixelSize: 14
+        horizontalAlignment: Text.AlignHCenter
+        text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
+
+        onLineLaidOut: {
+            // do nothing
+        }
+    }
+}
diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
index 78e03be9c2c38c2d8993cd6c9b8a6368e9e2ea92..dfbd190a6565e8377980c624478dbcec838b7b7f 100644
--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp
+++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
@@ -126,6 +126,7 @@ private slots:
     void clipRect();
     void lineLaidOut();
     void lineLaidOutRelayout();
+    void lineLaidOutHAlign();
 
     void imgTagsBaseUrl_data();
     void imgTagsBaseUrl();
@@ -2630,6 +2631,23 @@ void tst_qquicktext::lineLaidOutRelayout()
     delete window;
 }
 
+void tst_qquicktext::lineLaidOutHAlign()
+{
+    QQuickView *window = createView(testFile("lineLayoutHAlign.qml"));
+
+    QQuickText *myText = window->rootObject()->findChild<QQuickText*>("myText");
+    QVERIFY(myText != 0);
+
+    QQuickTextPrivate *textPrivate = QQuickTextPrivate::get(myText);
+    QVERIFY(textPrivate != 0);
+
+    QCOMPARE(textPrivate->layout.lineCount(), 1);
+
+    QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().x() < 0.0);
+
+    delete window;
+}
+
 void tst_qquicktext::imgTagsBaseUrl_data()
 {
     QTest::addColumn<QUrl>("src");