diff --git a/src/controls/Private/qmldir b/src/controls/Private/qmldir
index f099634c2f2ef520503d224b027925da3f12ecc4..3513878067da5fe0c64a0d5e613adb3bd3b872f1 100644
--- a/src/controls/Private/qmldir
+++ b/src/controls/Private/qmldir
@@ -20,4 +20,3 @@ MenuContentItem 1.0 MenuContentItem.qml
 MenuContentScroller 1.0 MenuContentScroller.qml
 ColumnMenuContent 1.0 ColumnMenuContent.qml
 singleton TextSingleton 1.0 TextSingleton.qml
-
diff --git a/src/controls/Private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp
index 68f86d36be13102256d8580855834698131245fe..a14a22d152b9328119e5e4fee37a2fe335f24bae 100644
--- a/src/controls/Private/qquickstyleitem.cpp
+++ b/src/controls/Private/qquickstyleitem.cpp
@@ -1684,4 +1684,45 @@ void QQuickStyleItem::updatePolish()
     }
 }
 
+QPixmap QQuickTableRowImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
+{
+    Q_UNUSED (requestedSize);
+    int width = 16;
+    int height = 16;
+    if (size)
+        *size = QSize(width, height);
+
+    QPixmap pixmap(width, height);
+
+    QStyleOptionViewItem opt;
+    opt.state |= QStyle::State_Enabled;
+    opt.rect = QRect(0, 0, width, height);
+    QString style = qApp->style()->metaObject()->className();
+    opt.features = 0;
+
+    if (id.contains("selected"))
+        opt.state |= QStyle::State_Selected;
+
+    if (id.contains("active")) {
+        opt.state |= QStyle::State_Active;
+        opt.palette.setCurrentColorGroup(QPalette::Active);
+    } else
+        opt.palette.setCurrentColorGroup(QPalette::Inactive);
+
+    if (id.contains("alternate"))
+        opt.features |= QStyleOptionViewItem::Alternate;
+
+    QPalette pal = QApplication::palette("QAbstractItemView");
+    if (opt.state & QStyle::State_Selected && (style.contains("Mac") ||
+                                               !qApp->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected))) {
+        pal.setCurrentColorGroup(opt.palette.currentColorGroup());
+        pixmap.fill(pal.highlight().color());
+    } else {
+        pixmap.fill(pal.base().color());
+        QPainter pixpainter(&pixmap);
+        qApp->style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &opt, &pixpainter);
+    }
+    return pixmap;
+}
+
 QT_END_NAMESPACE
diff --git a/src/controls/Private/qquickstyleitem_p.h b/src/controls/Private/qquickstyleitem_p.h
index 7ab37a52c869842b2752754b4ffec8d8d1d6efa9..a13cd4ccf0bad93814796fe61a3de7523082e837 100644
--- a/src/controls/Private/qquickstyleitem_p.h
+++ b/src/controls/Private/qquickstyleitem_p.h
@@ -44,6 +44,7 @@
 
 #include <QtGui/qimage.h>
 #include <QtQuick/qquickitem.h>
+#include <QtQuick/qquickimageprovider.h>
 #include "qquickpadding_p.h"
 
 QT_BEGIN_NAMESPACE
@@ -51,6 +52,14 @@ QT_BEGIN_NAMESPACE
 class QWidget;
 class QStyleOption;
 
+class QQuickTableRowImageProvider : public QQuickImageProvider
+{
+public:
+    QQuickTableRowImageProvider()
+        : QQuickImageProvider(QQuickImageProvider::Pixmap) {}
+    QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize);
+};
+
 class QQuickStyleItem: public QQuickItem
 {
     Q_OBJECT
diff --git a/src/controls/Styles/Desktop/RowItemSingleton.qml b/src/controls/Styles/Desktop/RowItemSingleton.qml
new file mode 100644
index 0000000000000000000000000000000000000000..b78fc04335d22eb53a158e488bf777171ddfa86b
--- /dev/null
+++ b/src/controls/Styles/Desktop/RowItemSingleton.qml
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+pragma Singleton
+import QtQuick.Controls.Private 1.0
+StyleItem {
+    elementType: "itemrow"
+}
diff --git a/src/controls/Styles/Desktop/TableViewStyle.qml b/src/controls/Styles/Desktop/TableViewStyle.qml
index d636b1b8f4f0726b9db5c89e9e69a58dc53bfc37..88611ab5c76f41f08b205214189c42216da89749 100644
--- a/src/controls/Styles/Desktop/TableViewStyle.qml
+++ b/src/controls/Styles/Desktop/TableViewStyle.qml
@@ -40,6 +40,7 @@
 import QtQuick 2.1
 import QtQuick.Controls 1.1
 import QtQuick.Controls.Private 1.0
+import "."
 
 ScrollViewStyle {
     id: root
@@ -81,17 +82,13 @@ ScrollViewStyle {
                                                                                   styleData.column === 0 ? "beginning" : ""
     }
 
-    property Component rowDelegate: StyleItem {
-        id: rowstyle
-        elementType: "itemrow"
-        activeControl: styleData.alternate ? "alternate" : ""
-        selected: styleData.selected ? true : false
-        height: Math.max(16, rowstyle.implicitHeight)
-        active: styleData.hasActiveFocus
-        border.left: 4
-        border.right: 4
-        textureWidth: 16
-        textureHeight: 16
+    property Component rowDelegate: BorderImage {
+        visible: styleData.selected || styleData.alternate
+        source: "image://__tablerow/" + (styleData.alternate ? "alternate_" : "")
+                + (styleData.selected ? "selected_" : "")
+                + (styleData.hasActiveFocus ? "active" : "")
+        height: Math.max(16, RowItemSingleton.implicitHeight)
+        border.left: 4 ; border.right: 4
     }
 
     property Component itemDelegate: Item {
diff --git a/src/controls/Styles/Desktop/qmldir b/src/controls/Styles/Desktop/qmldir
new file mode 100644
index 0000000000000000000000000000000000000000..ac80635cc2a495f81f4971da781943b3e0a9fdf8
--- /dev/null
+++ b/src/controls/Styles/Desktop/qmldir
@@ -0,0 +1,2 @@
+singleton RowItemSingleton 1.0 RowItemSingleton.qml
+
diff --git a/src/controls/Styles/styles.pri b/src/controls/Styles/styles.pri
index ba0f8f44885cc5f9a24827be70cbdd734b15e940..5a36767e31e1109fb86bbaf72645a033b62e7633 100644
--- a/src/controls/Styles/styles.pri
+++ b/src/controls/Styles/styles.pri
@@ -25,6 +25,8 @@ STYLES_QML_FILES = \
 
 # Desktop
 STYLES_QML_FILES += \
+    $$PWD/Desktop/qmldir \
+    $$PWD/Desktop/RowItemSingleton.qml \
     $$PWD/Desktop/ButtonStyle.qml \
     $$PWD/Desktop/BusyIndicatorStyle.qml \
     $$PWD/Desktop/CheckBoxStyle.qml \
diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp
index 52e7cb0d11c85996f76eb26ea46715b7410d9771..2a676e48d8fd6c776f2e2b11899b1494676b0953 100644
--- a/src/controls/plugin.cpp
+++ b/src/controls/plugin.cpp
@@ -57,6 +57,7 @@
 #include "Private/qquickcontrolsprivate_p.h"
 
 #ifdef QT_WIDGETS_LIB
+#include <QtQuick/qquickimageprovider.h>
 #include "Private/qquickstyleitem_p.h"
 #endif
 
@@ -134,8 +135,8 @@ void QtQuickControlsPlugin::initializeEngine(QQmlEngine *engine, const char *uri
 
 #ifdef QT_WIDGETS_LIB
     qmlRegisterType<QQuickStyleItem>(private_uri, 1, 0, "StyleItem");
+    engine->addImageProvider("__tablerow", new QQuickTableRowImageProvider);
 #endif
-
     engine->addImageProvider("desktoptheme", new QQuickDesktopIconProvider);
     if (isLoadedFromResource())
         engine->addImportPath(QStringLiteral("qrc:/"));