diff --git a/src/controls/Button.qml b/src/controls/Button.qml
index 2418bfa2dbe8ff0bad03f71929e8460c4645f59f..1a9b198eb75a5ec50b4e861ec397ccdf5f1d45c0 100644
--- a/src/controls/Button.qml
+++ b/src/controls/Button.qml
@@ -57,8 +57,7 @@ import QtQuick.Controls.Private 1.0
     Button is similar to the QPushButton widget.
 
     You can create a custom appearance for a Button by
-    assigning a ButtonStyle.
-
+    assigning a \l ButtonStyle.
  */
 BasicButton {
     id: button
@@ -66,7 +65,7 @@ BasicButton {
     /*! This property holds whether the push button is the default button.
         Default buttons decide what happens when the user presses enter in a
         dialog without giving a button explicit focus. \note This property only
-        changes the style of the button. The expected behavior needs to be
+        changes the appearance of the button. The expected behavior needs to be
         implemented by the user.
 
         The default value is \c false.
diff --git a/src/controls/CheckBox.qml b/src/controls/CheckBox.qml
index ad82a948702b189e2ff35f9d92abe9019d7d235a..48d5e8b2acd2273e9693e80c1b348abd8446c5e4 100644
--- a/src/controls/CheckBox.qml
+++ b/src/controls/CheckBox.qml
@@ -85,6 +85,9 @@ import QtQuick.Controls.Private 1.0
     \endqml
 
     Whenever a CheckBox is clicked, it emits the \l {AbstractCheckable::clicked}{clicked()} signal.
+
+    You can create a custom appearance for a CheckBox by
+    assigning a \l CheckBoxStyle.
 */
 
 AbstractCheckable {
diff --git a/src/controls/ComboBox.qml b/src/controls/ComboBox.qml
index 4d20736047e5eb1a7718929574664c788a463d55..7b13bc8eb4a45239e03fcfd6ba511b62a3d54e2c 100644
--- a/src/controls/ComboBox.qml
+++ b/src/controls/ComboBox.qml
@@ -72,6 +72,9 @@ import QtQuick.Controls.Private 1.0
            onCurrentIndexChanged: console.debug(currentText + ", " + cbItems.get(currentIndex).color)
        }
     \endqml
+
+    You can create a custom appearance for a ComboBox by
+    assigning a \l ComboBoxStyle.
 */
 
 Control {
diff --git a/src/controls/ProgressBar.qml b/src/controls/ProgressBar.qml
index 1e78ed92a3a33309707ae0b2c72b62649f4948ff..33e215142913eafe47e08b90bafae4e0a1bfb259 100644
--- a/src/controls/ProgressBar.qml
+++ b/src/controls/ProgressBar.qml
@@ -52,6 +52,8 @@ import QtQuick.Controls.Private 1.0
     The ProgressBar is used to give an indication of the progress of an operation.
     \l value is updated regularly and must be between \l minimumValue and \l maximumValue.
 
+    You can create a custom appearance for a ProgressBar by
+    assigning a \l ProgressBarStyle.
 */
 
 Control {
diff --git a/src/controls/RadioButton.qml b/src/controls/RadioButton.qml
index 963d085cb0cfb3fb97467e0319216de93069bfbc..fde08817b243677278f422644e22f5e39da17f55 100644
--- a/src/controls/RadioButton.qml
+++ b/src/controls/RadioButton.qml
@@ -72,6 +72,9 @@ import QtQuick.Controls.Private 1.0
         }
     }
     \endqml
+
+    You can create a custom appearance for a RadioButton by
+    assigning a \l RadioButtonStyle.
 */
 
 AbstractCheckable {
diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml
index bbd21b24d84252308a20bf94e5ff531b356fef1e..31f69b8f1d531703f18bc9624529aaf2dad39f3c 100644
--- a/src/controls/ScrollView.qml
+++ b/src/controls/ScrollView.qml
@@ -81,7 +81,7 @@ import QtQuick.Controls.Styles 1.0
     \l flickableItem.
 
     You can create a custom appearance for a ScrollView by
-    assigning a ScrollViewStyle.
+    assigning a \l ScrollViewStyle.
 */
 
 FocusScope {
@@ -147,7 +147,7 @@ FocusScope {
     property Component style: Qt.createComponent(Settings.style + "/ScrollViewStyle.qml", root)
 
     /* \internal */
-    property Style __style: styleLoader.item
+    property PaddedStyle __style: styleLoader.item
 
     activeFocusOnTab: true
 
diff --git a/src/controls/Slider.qml b/src/controls/Slider.qml
index 469843c6ea82c227b4f5b166bb6ce7e7f72fc2a4..711c449bfeb8c5a3452f1d0fd179dcc0a10d6e67 100644
--- a/src/controls/Slider.qml
+++ b/src/controls/Slider.qml
@@ -63,7 +63,7 @@ import QtQuick.Controls.Private 1.0
     needed, you can set the \l stepSize.
 
     You can create a custom appearance for a Slider by
-    assigning a SliderStyle.
+    assigning a \l SliderStyle.
 */
 
 Control {
diff --git a/src/controls/SpinBox.qml b/src/controls/SpinBox.qml
index bf8e66473c7a7be09caa2e1d4222d2144d92bab4..2f90ff952da7e679506dbd37366daf08323d7cff 100644
--- a/src/controls/SpinBox.qml
+++ b/src/controls/SpinBox.qml
@@ -201,10 +201,10 @@ Control {
         id: input
         clip: true
         anchors.fill: parent
-        anchors.leftMargin: __panel ? __panel.margins.left : 0
-        anchors.topMargin: __panel ? __panel.margins.top : 0
-        anchors.rightMargin: __panel ? __panel.margins.right: 0
-        anchors.bottomMargin: __panel ? __panel.margins.bottom: 0
+        anchors.leftMargin: __style ? __style.padding.left : 0
+        anchors.topMargin: __style ? __style.padding.top : 0
+        anchors.rightMargin: __style ? __style.padding.right: 0
+        anchors.bottomMargin: __style ? __style.padding.bottom: 0
 
         focus: true
         activeFocusOnPress: spinbox.activeFocusOnPress
diff --git a/src/controls/TabView.qml b/src/controls/TabView.qml
index 98c2466b864ccbae320574fed4282e6d8be87f33..d292ce05e307a16856b63cbe27720873009b7fe2 100644
--- a/src/controls/TabView.qml
+++ b/src/controls/TabView.qml
@@ -50,7 +50,7 @@ import QtQuick.Controls.Private 1.0
     \brief A control that allows the user to select one of multiple stacked items.
 
     You can create a custom appearance for a TabView by
-    assigning a TabViewStyle.
+    assigning a \l TabViewStyle.
 */
 
 FocusScope {
diff --git a/src/controls/TextField.qml b/src/controls/TextField.qml
index 81c30fc14dcd9ad41d998418239cdb39faa19ad8..903a646243b183956c0ea82c8f0060142e822c91 100644
--- a/src/controls/TextField.qml
+++ b/src/controls/TextField.qml
@@ -56,7 +56,7 @@ import "Styles"
     TextField to be used for a password input field.
 
     You can create a custom appearance for a TextField by
-    assigning a TextFieldStyle.
+    assigning a \l TextFieldStyle.
 
     \sa TextArea, TextInput
 */
diff --git a/src/controls/doc/qtquickcontrols.qdocconf b/src/controls/doc/qtquickcontrols.qdocconf
index a098c3d3b82c89f48eb608804ca6147ee9d59fd9..c04bced2c4807ef2f30acedf4bdee562e24085f1 100644
--- a/src/controls/doc/qtquickcontrols.qdocconf
+++ b/src/controls/doc/qtquickcontrols.qdocconf
@@ -51,6 +51,8 @@ sources += ../../private/qstyleitem.cpp \
            ../../private/ScrollBar.qml \
            ../../private/TabBar.qml \
            ../../private/Control.qml \
-           ../../private/Style.qml
+           ../../private/Style.qml \
+           ../../private/qquickpaddedstyle.h \
+           ../../private/qquickpaddedstyle.cpp
 
 imagedirs += images
diff --git a/src/controls/doc/src/qtquickcontrols-index.qdoc b/src/controls/doc/src/qtquickcontrols-index.qdoc
index e9e4f708a4c0bfd8ed8b29369f8e6080504ed248..011de527d23861873f8030a48036248520b7b673 100644
--- a/src/controls/doc/src/qtquickcontrols-index.qdoc
+++ b/src/controls/doc/src/qtquickcontrols-index.qdoc
@@ -81,4 +81,7 @@
      \list
       \li \l{Qt Quick Controls Examples}
      \endlist
+
+    \l {Qt Quick Controls Styles QML Types}
+
 */
diff --git a/src/controls/doc/src/styles.qdoc b/src/controls/doc/src/styles.qdoc
index 4bb0ae26a0eb0e845f91e39555def9c4b34c8d27..4080941421f1df7a89eed37d900f8ad056da60d9 100644
--- a/src/controls/doc/src/styles.qdoc
+++ b/src/controls/doc/src/styles.qdoc
@@ -31,7 +31,11 @@
     \ingroup qmlmodules
     \brief Provides QML types for Qt Quick Controls styles.
 
-    The \l{Qt Quick Controls} module provides a set of QML types for handling
+    The \l{Qt Quick Controls} module provides a set of QML types for handling
     styles.
 
+    Some of the controls allow custom styling similar to widget style sheets.
+    A styling object is usually a collection of properties that control behavior and simple delegates
+    that can be replaced with custom QML snippets.
+
 */
diff --git a/src/private/Control.qml b/src/private/Control.qml
index 6c963d224c2287a20cd29bf3d4dc4c057597391e..d518adb25085750f94678161ccb175b6c803d1b6 100644
--- a/src/private/Control.qml
+++ b/src/private/Control.qml
@@ -43,30 +43,34 @@ import QtQuick.Controls.Styles 1.0
 /*!
         \qmltype Control
         \internal
+        \qmlabstract
         \inqmlmodule QtQuick.Controls.Private 1.0
 */
 FocusScope {
     id: root
 
+    /*! \qmlproperty Component Control::style
+
+        The style Component for this control.
+        \sa {Qt Quick Controls Styles QML Types}
+
+    */
     property Component style
 
-    /* \internal */
-    property Style __style: styleLoader.item
+    /*! \internal */
+    property QtObject __style: styleLoader.item
 
-    /* \internal */
+    /*! \internal */
     property Item __panel: panelLoader.item
 
-    /* \internal */
+    /*! \internal */
     property var styleHints: []
 
-    /* \internal */
     implicitWidth: __panel ? __panel.implicitWidth: 0
-
-    /* \internal */
     implicitHeight: __panel ? __panel.implicitHeight: 0
-
     activeFocusOnTab: false
 
+    /*! \internal */
     property alias __controlState: styleLoader.controlState
 
     Loader {
diff --git a/src/private/Margins.qml b/src/private/Margins.qml
deleted file mode 100644
index c52f55b825401ca53581a5690892c184e1740d04..0000000000000000000000000000000000000000
--- a/src/private/Margins.qml
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-**     of its contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls.Styles 1.0
-
-/*!
-        \qmltype Margins
-        \internal
-        \inqmlmodule QtQuick.Controls.Private 1.0
-*/
-QtObject {
-    property int top
-    property int left
-    property int right
-    property int bottom
-}
diff --git a/src/private/plugin.cpp b/src/private/plugin.cpp
index 0392a2494431432b2156d1c6964e25ca87b79849..17bfed07fb8d9577b44dd4bc764e6ca183023bb9 100644
--- a/src/private/plugin.cpp
+++ b/src/private/plugin.cpp
@@ -45,6 +45,7 @@
 #include "qquicktooltip_p.h"
 #include "qquickcontrolsettings_p.h"
 #include "qquickspinboxvalidator_p.h"
+#include "qquickpaddedstyle_p.h"
 
 #ifndef QT_NO_WIDGETS
 #include "qquickstyleitem_p.h"
@@ -80,6 +81,8 @@ public:
 
 void QtQuickControlsPrivatePlugin::registerTypes(const char *uri)
 {
+    qmlRegisterType<QQuickPaddedStyle>(uri, 1, 0, "PaddedStyle");
+    qmlRegisterType<QQuickPadding>();
     qmlRegisterType<QQuickRangeModel>(uri, 1, 0, "RangeModel");
     qmlRegisterType<QQuickWheelArea>(uri, 1, 0, "WheelArea");
     qmlRegisterType<QQuickSpinBoxValidator>(uri, 1, 0, "SpinBoxValidator");
diff --git a/src/private/private.pro b/src/private/private.pro
index 16b6cf8161271049b78390afe100adb48fda1fb5..88ce0b045667e902d7f82a71515f0dd519f9b62f 100644
--- a/src/private/private.pro
+++ b/src/private/private.pro
@@ -9,7 +9,9 @@ HEADERS += \
     $$PWD/qquickrangemodel_p.h \
     $$PWD/qquickrangemodel_p_p.h \
     $$PWD/qquickcontrolsettings_p.h \
-    $$PWD/qquickwheelarea_p.h
+    $$PWD/qquickwheelarea_p.h \
+    $$PWD/qquickpaddedstyle_p.h \
+    $$PWD/qquickpadding_p.h
 
 SOURCES += \
     $$PWD/plugin.cpp \
@@ -17,7 +19,8 @@ SOURCES += \
     $$PWD/qquickspinboxvalidator.cpp \
     $$PWD/qquickrangemodel.cpp \
     $$PWD/qquickcontrolsettings.cpp \
-    $$PWD/qquickwheelarea.cpp
+    $$PWD/qquickwheelarea.cpp \
+    $$PWD/qquickpaddedstyle.cpp
 
 # private qml files
 QML_FILES += \
@@ -25,7 +28,6 @@ QML_FILES += \
     TabBar.qml \
     BasicButton.qml \
     Control.qml \
-    Margins.qml \
     Style.qml \
     style.js \
     ModalPopupBehavior.qml \
diff --git a/src/private/qquickpaddedstyle.cpp b/src/private/qquickpaddedstyle.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..320a3f535426c805e8124fd64003b1fbfbaf79ed
--- /dev/null
+++ b/src/private/qquickpaddedstyle.cpp
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#include "qquickpaddedstyle_p.h"
+#include "qquickpadding_p.h"
+
+/*!
+    \qmltype PaddedStyle
+    \instantiates QQuickPaddedStyle
+    \qmlabstract
+    \internal
+*/
+
+QT_BEGIN_NAMESPACE
+
+QQuickPaddedStyle::QQuickPaddedStyle(QQuickItem *parent) :
+    QQuickItem(parent)
+{
+}
+
+/*!
+    \qmlproperty int PaddedStyle::padding.top
+    \qmlproperty int PaddedStyle::padding.left
+    \qmlproperty int PaddedStyle::padding.right
+    \qmlproperty int PaddedStyle::padding.bottom
+
+    This grouped property holds the \c top, \c left, \c right and \c bottom padding.
+*/
+
+QT_END_NAMESPACE
diff --git a/src/private/qquickpaddedstyle_p.h b/src/private/qquickpaddedstyle_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a5a3c95d378ee20d0e363da5b067107f770ea70
--- /dev/null
+++ b/src/private/qquickpaddedstyle_p.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QQUICKPADDEDSTYLE_H
+#define QQUICKPADDEDSTYLE_H
+
+#include <QtQuick/QQuickItem>
+#include <QtQml/QQmlListProperty>
+#include "qquickpadding_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QQuickPaddedStyle : public QQuickItem
+{
+    Q_OBJECT
+
+    Q_PROPERTY(QQuickPadding* padding READ padding CONSTANT)
+
+public:
+    QQuickPaddedStyle(QQuickItem *parent = 0);
+    QQuickPadding* padding() { return &m_padding; }
+
+private:
+    QQuickPadding m_padding;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKPADDEDSTYLE_H
diff --git a/src/private/qquickpadding_p.h b/src/private/qquickpadding_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..1830df4c681c40ace37e68bd432e06e668500e4c
--- /dev/null
+++ b/src/private/qquickpadding_p.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QQUICKPADDING_H
+#define QQUICKPADDING_H
+
+#include <QtCore/qobject.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickPadding : public QObject
+{
+    Q_OBJECT
+
+    Q_PROPERTY(int left READ left WRITE setLeft NOTIFY leftChanged)
+    Q_PROPERTY(int top READ top WRITE setTop NOTIFY topChanged)
+    Q_PROPERTY(int right READ right WRITE setRight NOTIFY rightChanged)
+    Q_PROPERTY(int bottom READ bottom WRITE setBottom NOTIFY bottomChanged)
+
+    int m_left;
+    int m_top;
+    int m_right;
+    int m_bottom;
+
+public:
+    QQuickPadding(QObject *parent = 0) :
+        QObject(parent),
+        m_left(0),
+        m_top(0),
+        m_right(0),
+        m_bottom(0) {}
+
+    int left() const { return m_left; }
+    int top() const { return m_top; }
+    int right() const { return m_right; }
+    int bottom() const { return m_bottom; }
+
+public slots:
+    void setLeft(int arg) { if (m_left != arg) {m_left = arg; emit leftChanged();}}
+    void setTop(int arg) { if (m_top != arg) {m_top = arg; emit topChanged();}}
+    void setRight(int arg) { if (m_right != arg) {m_right = arg; emit rightChanged();}}
+    void setBottom(int arg) {if (m_bottom != arg) {m_bottom = arg; emit bottomChanged();}}
+
+signals:
+    void leftChanged();
+    void topChanged();
+    void rightChanged();
+    void bottomChanged();
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKPADDING_H
diff --git a/src/styles/Base/ButtonStyle.qml b/src/styles/Base/ButtonStyle.qml
index 917962928e4310047470eaf8aa75a0acf676b881..a524d93f47e792ffc4c7c40e7c30dcbd982953fe 100644
--- a/src/styles/Base/ButtonStyle.qml
+++ b/src/styles/Base/ButtonStyle.qml
@@ -72,14 +72,25 @@ import QtQuick.Controls.Private 1.0
     If you need a custom label, you can replace the label item.
 */
 
-Style {
+PaddedStyle {
     id: buttonstyle
 
     /*! The \l Button attached to this style. */
     readonly property Button control: __control
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
+
     /*! The padding between the background and the label components. */
-    property Margins padding: Margins { top: 4 ; left: 4 ; right: 4 ; bottom: 4 }
+    padding {
+        top: 4
+        left: 4
+        right: 4
+        bottom: 4
+    }
 
     /*! The background of the button. */
     property Component background: Item {
diff --git a/src/styles/Base/CheckBoxStyle.qml b/src/styles/Base/CheckBoxStyle.qml
index ccf40f0d29b394122a7cb41a9ec5d32bab0bcc82..1323aa85a94a4a117dc0388f8a584eb3d690d598 100644
--- a/src/styles/Base/CheckBoxStyle.qml
+++ b/src/styles/Base/CheckBoxStyle.qml
@@ -72,11 +72,16 @@ import QtQuick.Controls.Private 1.0
     }
     \endqml
 */
-Style {
+PaddedStyle {
     id: checkboxStyle
 
     /*! The \l CheckBox attached to this style. */
     readonly property CheckBox control: __control
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
 
     /*! The text label. */
     property Component label: Text {
@@ -87,7 +92,12 @@ Style {
     }
 
     /*! The content padding. */
-    property Margins padding: Margins { top: 0 ; left: 0 ; right: 4 ; bottom: 0 }
+    padding {
+        top: 0
+        left: 0
+        right: 4
+        bottom: 0
+    }
 
     /*! The spacing between indicator and label. */
     property int spacing: 4
diff --git a/src/styles/Base/ComboBoxStyle.qml b/src/styles/Base/ComboBoxStyle.qml
index deb5ea5073280d7645a45feeb4f98e8c35a2a07d..9795d1a84f72f8f16483f09f1a0e8e27e1a39259 100644
--- a/src/styles/Base/ComboBoxStyle.qml
+++ b/src/styles/Base/ComboBoxStyle.qml
@@ -49,13 +49,18 @@ import QtQuick.Controls.Private 1.0
     \brief Provides custom styling for ComboBox
 */
 
-Style {
+PaddedStyle {
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l ComboBox attached to this style. */
     readonly property ComboBox control: __control
 
     /*! The padding between the background and the label components. */
-    property Margins padding: Margins { top: 4 ; left: 6 ; right: 6 ; bottom:4 }
+    padding { top: 4 ; left: 6 ; right: 6 ; bottom:4 }
 
     /*! The background of the button. */
     property Component background: Item {
diff --git a/src/styles/Base/GroupBoxStyle.qml b/src/styles/Base/GroupBoxStyle.qml
index d8538b95a14d9557b773c020bb31dde356c2073a..86fc83fe26d2368309ebd71da8af05a58e70bf19 100644
--- a/src/styles/Base/GroupBoxStyle.qml
+++ b/src/styles/Base/GroupBoxStyle.qml
@@ -47,13 +47,18 @@ import QtQuick.Controls.Private 1.0
     \inqmlmodule QtQuick.Controls.Styles 1.0
     \since QtQuick.Controls.Styles 1.0
 */
-Style {
+PaddedStyle {
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l GroupBox attached to this style. */
     readonly property GroupBox control: __control
 
     /*! The margin from the content item to the groupbox. */
-    property Margins padding: Margins {
+    padding {
         top: (control.title.length > 0 || control.checkable ? 16 : 0) + 10
         left: 8
         right: 8
diff --git a/src/styles/Base/ProgressBarStyle.qml b/src/styles/Base/ProgressBarStyle.qml
index 94c3bc416b18f824626a84fe391dba3d544f2757..1d7c98a813e9fedf355e885959beb853bd4431f8 100644
--- a/src/styles/Base/ProgressBarStyle.qml
+++ b/src/styles/Base/ProgressBarStyle.qml
@@ -71,9 +71,14 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-Style {
+PaddedStyle {
     id: progressBarStyle
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l ProgressBar attached to this style. */
     readonly property ProgressBar control: __control
 
@@ -87,8 +92,7 @@ Style {
         For convenience, you can also access the readonly property \c controlState.progress
         which provides the current progress as a \c real in the range [0-1]
     */
-    property Margins padding: Margins { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
-
+    padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
 
     property Component progress: Rectangle {
         property color progressColor: "#49d"
diff --git a/src/styles/Base/RadioButtonStyle.qml b/src/styles/Base/RadioButtonStyle.qml
index e1696ad20ac0a2c8ed270ad033bc5132ff69f504..49d15e3d3ff9dc8056aacda48f932c9107915e8c 100644
--- a/src/styles/Base/RadioButtonStyle.qml
+++ b/src/styles/Base/RadioButtonStyle.qml
@@ -72,9 +72,14 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-Style {
+PaddedStyle {
     id: radiobuttonStyle
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l RadioButton attached to this style. */
     readonly property RadioButton control: __control
 
@@ -87,7 +92,7 @@ Style {
     }
 
     /*! The content padding. */
-    property Margins padding: Margins { top: 0 ; left: 0 ; right: 4 ; bottom: 0 }
+    padding { top: 0 ; left: 0 ; right: 4 ; bottom: 0 }
 
     /*! The spacing between indicator and label. */
     property int spacing: 4
diff --git a/src/styles/Base/ScrollViewStyle.qml b/src/styles/Base/ScrollViewStyle.qml
index a6f3a39a21d7a63336794b53529f982d792b3a58..8bf5a120ca41f32af3e9498584a86716014fa1ec 100644
--- a/src/styles/Base/ScrollViewStyle.qml
+++ b/src/styles/Base/ScrollViewStyle.qml
@@ -47,14 +47,19 @@ import QtQuick.Controls.Private 1.0
     \since QtQuick.Controls.Styles 1.0
     \brief Provides custom styling for ScrollView
 */
-Style {
+PaddedStyle {
     id: root
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l ScrollView attached to this style. */
     readonly property ScrollView control: __control
 
     /*! This property controls the frame border padding of the scrollView. */
-    property Margins padding: Margins {left: 1; top: 1; right: 1; bottom: 1}
+    padding {left: 1; top: 1; right: 1; bottom: 1}
 
     /*! This Component paints the corner area between scroll bars */
     property Component corner: Rectangle { color: "#ccc" }
diff --git a/src/styles/Base/SliderStyle.qml b/src/styles/Base/SliderStyle.qml
index 0e244b62ed3677cfd32e5da9ec65091a7f651d90..7870e2f2af67a2755593498a760aebbdfb765ae8 100644
--- a/src/styles/Base/SliderStyle.qml
+++ b/src/styles/Base/SliderStyle.qml
@@ -78,14 +78,18 @@ import QtQuick.Controls.Private 1.0
     }
     \endqml
 */
-Style {
+PaddedStyle {
     id: styleitem
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l Slider attached to this style. */
     readonly property Slider control: __control
 
-    /*! The padding around the groove item. */
-    property Margins padding: Margins { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
+    padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
 
     /*! This property holds the item for the slider handle.
         You can access the slider through the \c control property
diff --git a/src/styles/Base/SpinBoxStyle.qml b/src/styles/Base/SpinBoxStyle.qml
index 07ddf6d7befb904d0c4909dadeca79fb245660bd..9b37fe5bbf4f1be5748fdafa44a7bec9f4ba597c 100644
--- a/src/styles/Base/SpinBoxStyle.qml
+++ b/src/styles/Base/SpinBoxStyle.qml
@@ -49,14 +49,20 @@ import QtQuick.Controls.Private 1.0
     \brief Provides custom styling for SpinBox
 */
 
-Style {
+PaddedStyle {
     id: spinboxStyle
 
     /*! The \l SpinBox attached to this style. */
     readonly property SpinBox control: __control
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
+
     /*! The content margins of the text field. */
-    property Margins margins: Margins { top: 0 ; left: 5 ; right: 12 ; bottom: 0 }
+    padding { top: 0 ; left: 5 ; right: 12 ; bottom: 0 }
 
     /*! The text color. */
     property color textColor: __syspal.text
@@ -130,7 +136,7 @@ Style {
         property color selectionColor: spinboxStyle.selectionColor
         property color selectedTextColor: spinboxStyle.selectedTextColor
 
-        property var margins: spinboxStyle.margins
+        property var margins: spinboxStyle.padding
 
         property rect upRect: Qt.rect(width - incrementControlLoader.implicitWidth, 0, incrementControlLoader.implicitWidth, height / 2 + 1)
         property rect downRect: Qt.rect(width - decrementControlLoader.implicitWidth, height / 2, decrementControlLoader.implicitWidth, height / 2)
diff --git a/src/styles/Base/TextFieldStyle.qml b/src/styles/Base/TextFieldStyle.qml
index 4e7e8b66cb57141529b82a4548ebcd2ffa219abb..3c1a10a6906733d30d99a51e6cada29ba17c73bf 100644
--- a/src/styles/Base/TextFieldStyle.qml
+++ b/src/styles/Base/TextFieldStyle.qml
@@ -64,14 +64,19 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-Style {
+PaddedStyle {
     id: style
 
+    /*! \internal */
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
     /*! The \l TextField attached to this style. */
     readonly property TextField control: __control
 
     /*! The content margins of the text field. */
-    property Margins padding: Margins { top: 4 ; left: 6 ; right: 6 ; bottom:4 }
+    padding { top: 4 ; left: 6 ; right: 6 ; bottom:4 }
 
     /*! The current font. */
     property font font
diff --git a/src/styles/Desktop/GroupBoxStyle.qml b/src/styles/Desktop/GroupBoxStyle.qml
index d22341c52545f66230cc546affb1d31ffbe2a204..3c4bfc43e119fc65acf66dd3618d86a219e0ae9a 100644
--- a/src/styles/Desktop/GroupBoxStyle.qml
+++ b/src/styles/Desktop/GroupBoxStyle.qml
@@ -42,7 +42,7 @@ import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 
 
-Style {
+PaddedStyle {
     readonly property GroupBox control: __control
 
     property var __style: StyleItem { id: style }
@@ -54,7 +54,7 @@ Style {
             titleHeight = 9
     }
 
-    property Margins padding: Margins {
+    padding {
         top: (control.title.length > 0 || control.checkable ? titleHeight : 0) + 6
         left: 8
         right: 8
diff --git a/src/styles/Desktop/ScrollViewStyle.qml b/src/styles/Desktop/ScrollViewStyle.qml
index cc13cb42120bec6d3f0aa6d16ba50f4677cf00f1..42c9fc3e2404c22d4631875f114be849a3e1c8db 100644
--- a/src/styles/Desktop/ScrollViewStyle.qml
+++ b/src/styles/Desktop/ScrollViewStyle.qml
@@ -42,10 +42,10 @@ import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 import "." as Desktop
 
-Style {
+PaddedStyle {
     id: root
 
-    property Margins padding: Margins {
+    padding {
         property int frameWidth: __styleitem.pixelMetric("defaultframewidth")
         left: frameWidth
         top: frameWidth
diff --git a/src/styles/Desktop/SliderStyle.qml b/src/styles/Desktop/SliderStyle.qml
index d84c21efc164ce662828a0cf46874aa6f7c43c8a..c55ef8740dace86633a71b2924a3ef98e0b8abf5 100644
--- a/src/styles/Desktop/SliderStyle.qml
+++ b/src/styles/Desktop/SliderStyle.qml
@@ -40,7 +40,8 @@
 import QtQuick 2.1
 import QtQuick.Controls.Private 1.0
 
-Style {
+PaddedStyle {
+    readonly property Item control: __control
     property Component panel: StyleItem {
         elementType: "slider"
         sunken: control.pressed
@@ -60,5 +61,5 @@ Style {
         property int handleWidth: 15
         property int handleHeight: 15
     }
-    property Margins padding: Margins { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
+    padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
 }
diff --git a/src/styles/Desktop/SpinBoxStyle.qml b/src/styles/Desktop/SpinBoxStyle.qml
index 02b2ecbe5b2f8aa1917285ff34ffbfe1f5e1af76..644b49721c864bb7631f7cb7a02609173761ee27 100644
--- a/src/styles/Desktop/SpinBoxStyle.qml
+++ b/src/styles/Desktop/SpinBoxStyle.qml
@@ -41,21 +41,27 @@ import QtQuick 2.1
 import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 
-Style {
+PaddedStyle {
     readonly property SpinBox control: __control
+
+    property var __syspal: SystemPalette {
+        colorGroup: control.enabled ?
+                        SystemPalette.Active : SystemPalette.Disabled
+    }
+
+    padding {
+       top: control.__panel ? control.__panel.topPadding : 0
+       left: control.__panel ? control.__panel.leftPadding : 0
+       right: control.__panel ? control.__panel.rightPadding : 0
+       bottom: control.__panel ? control.__panel.bottomPadding : 0
+   }
+
     property Component panel: Item {
         id: style
 
         property rect upRect
         property rect downRect
 
-        property Margins margins: Margins{
-            top: edit.anchors.topMargin
-            left: 2 + edit.anchors.leftMargin
-            right: 2 + edit.anchors.leftMargin
-            bottom: edit.anchors.bottomMargin
-        }
-
         property int horizontalTextAlignment: Qt.AlignLeft
         property int verticalTextAlignment: Qt.AlignVCenter
 
@@ -64,6 +70,11 @@ Style {
         property color selectionColor: __syspal.highlight
         property color selectedTextColor: __syspal.highlightedText
 
+        property int topPadding: edit.anchors.topMargin
+        property int leftPadding: 2 + edit.anchors.leftMargin
+        property int rightPadding: 2 + edit.anchors.leftMargin
+        property int bottomPadding: edit.anchors.bottomMargin
+
         width: 100
         height: styleitem.implicitHeight
 
diff --git a/src/styles/Desktop/TableViewStyle.qml b/src/styles/Desktop/TableViewStyle.qml
index 6cb13749c4e2aff5428eaaa0c1eff05888e9e7b1..da6a47e5527d0d5bf7d443513bf1789ec11156b3 100644
--- a/src/styles/Desktop/TableViewStyle.qml
+++ b/src/styles/Desktop/TableViewStyle.qml
@@ -44,6 +44,7 @@ import QtQuick.Controls.Private 1.0
 ScrollViewStyle {
     id: root
 
+    readonly property TableView control: __control
     property bool activateItemOnSingleClick: __styleitem.styleHint("activateItemOnSingleClick")
     property color textColor: __styleitem.styleHint("textColor")
     property color highlightedTextColor: __styleitem.styleHint("highlightedTextColor")