diff --git a/src/libs/extensionsystem/mainwindow.ui b/src/libs/extensionsystem/mainwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp
index bbb703f8f7a50421503046e1ab93aa358e8a3a99..6428e20bcd42147aeb5070339378b3a813c10f96 100644
--- a/src/libs/utils/fancymainwindow.cpp
+++ b/src/libs/utils/fancymainwindow.cpp
@@ -33,7 +33,6 @@
 #include <QtGui/QDockWidget>
 #include <QtCore/QSettings>
 
-
 using namespace Utils;
 
 FancyMainWindow::FancyMainWindow(QWidget *parent)
@@ -41,6 +40,7 @@ FancyMainWindow::FancyMainWindow(QWidget *parent)
     m_locked(true),
     m_handleDockVisibilityChanges(true)
 {
+    setProperty("panelwidget", true);
 }
 
 QDockWidget *FancyMainWindow::addDockForWidget(QWidget *widget)
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index 924b290c763acc725039b53b5abd14f5d2e18dad..104151875927ff45164ee9e6a27068ae3d08732a 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -55,6 +55,7 @@
 #include <QtGui/QStyleFactory>
 #include <QtGui/QStyleOption>
 #include <QtGui/QToolBar>
+#include <QtGui/QTreeView>
 #include <QtGui/QToolButton>
 #include <QtGui/QAbstractItemView>
 
@@ -88,10 +89,9 @@ bool panelWidget(const QWidget *widget)
     while (p) {
         if (qobject_cast<const QToolBar *>(p) ||
             qobject_cast<const QStatusBar *>(p) ||
-            qobject_cast<const QMenuBar *>(p))
+            qobject_cast<const QMenuBar *>(p) ||
+            p->property("panelwidget").toBool())
             return styleEnabled(widget);
-        if (p->property("panelwidget").toBool())
-            return true;
         p = p->parentWidget();
     }
     return false;
@@ -197,6 +197,8 @@ int ManhattanStyle::pixelMetric(PixelMetric metric, const QStyleOption *option,
         if (panelWidget(widget))
             retval = 16;
         break;
+    case PM_DockWidgetSeparatorExtent:
+        return 1;
     case PM_MenuPanelWidth:
     case PM_MenuBarHMargin:
     case PM_MenuBarVMargin:
@@ -260,6 +262,7 @@ void ManhattanStyle::polish(QWidget *widget)
         if (qobject_cast<QToolBar*>(widget))
             widget->removeEventFilter(baseStyle());
     }
+
     if (panelWidget(widget)) {
         widget->setAttribute(Qt::WA_LayoutUsesWidgetRect, true);
         if (qobject_cast<QToolButton*>(widget)) {
@@ -594,6 +597,27 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
         return QProxyStyle::drawControl(element, option, painter, widget);
 
     switch (element) {
+    case CE_Splitter:
+        painter->fillRect(option->rect, Utils::StyleHelper::borderColor());
+        break;
+
+    case CE_TabBarTabShape:
+        // Most styles draw a single dark outline. This looks rather ugly when combined with our
+        // single pixel dark separator so we adjust the first tab to compensate for this
+
+        if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(option)) {
+            QStyleOptionTabV3 adjustedTab = *tab;
+            if (tab->position == QStyleOptionTab::Beginning) {
+                if (option->direction == Qt::LeftToRight)
+                    adjustedTab.rect = adjustedTab.rect.adjusted(-1, 0, 0, 0);
+                else
+                    adjustedTab.rect = adjustedTab.rect.adjusted(0, 0, 1 ,0);
+            }
+            QProxyStyle::drawControl(element, &adjustedTab, painter, widget);
+            return;
+        }
+        break;
+
     case CE_MenuBarItem:
         painter->save();
         if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
diff --git a/src/plugins/debugger/breakwindow.cpp b/src/plugins/debugger/breakwindow.cpp
index 6cd9b4841d660ae714f87a3d6a89c9ae07a94193..953d1cea250342d324114030c6835336461ab32b 100644
--- a/src/plugins/debugger/breakwindow.cpp
+++ b/src/plugins/debugger/breakwindow.cpp
@@ -83,6 +83,7 @@ BreakWindow::BreakWindow(Debugger::DebuggerManager *manager)
   : m_manager(manager), m_alwaysResizeColumnsToContents(false)
 {
     QAction *act = theDebuggerAction(UseAlternatingRowColors);
+    setFrameStyle(QFrame::NoFrame);
     setWindowTitle(tr("Breakpoints"));
     setWindowIcon(QIcon(":/debugger/images/debugger_breakpoints.png"));
     setAlternatingRowColors(act->isChecked());
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 9c0e217e14ee02c6d06c36cb353957aa3c237e8c..70c02b886ffc4a9986b9708ed09e18b9417f5ed7 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -64,6 +64,7 @@
 #endif
 
 #include <coreplugin/icore.h>
+#include <coreplugin/minisplitter.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <utils/qtcassert.h>
 #include <projectexplorer/toolchain.h>
@@ -585,7 +586,7 @@ void DebuggerManager::init()
 
     d->m_threadsDock = uiSwitcher->createDockWidget(LANG_CPP, d->m_threadsWindow);
 
-    QSplitter *localsAndWatchers = new QSplitter(Qt::Vertical);
+    QSplitter *localsAndWatchers = new Core::MiniSplitter(Qt::Vertical);
     localsAndWatchers->setWindowTitle(d->m_localsWindow->windowTitle());
     localsAndWatchers->addWidget(d->m_localsWindow);
     localsAndWatchers->addWidget(d->m_watchersWindow);
diff --git a/src/plugins/debugger/debuggeroutputwindow.cpp b/src/plugins/debugger/debuggeroutputwindow.cpp
index 45e535c229937791f41091be044c6e51c6875328..0c39f9a15318644e10b2f1ab88f51def56f1c3f2 100644
--- a/src/plugins/debugger/debuggeroutputwindow.cpp
+++ b/src/plugins/debugger/debuggeroutputwindow.cpp
@@ -47,6 +47,7 @@
 
 #include <aggregation/aggregate.h>
 #include <coreplugin/findplaceholder.h>
+#include <coreplugin/minisplitter.h>
 #include <find/basetextfind.h>
 
 using namespace Debugger;
@@ -329,7 +330,8 @@ DebuggerOutputWindow::DebuggerOutputWindow(QWidget *parent)
 {
     setWindowTitle(tr("Debugger"));
 
-    QSplitter *m_splitter = new QSplitter(Qt::Horizontal, this);
+    QSplitter *m_splitter = new  Core::MiniSplitter(Qt::Horizontal);
+    m_splitter->setParent(this);
     // mixed input/output
     m_combinedText = new CombinedPane(this);
     m_combinedText->setReadOnly(true);
diff --git a/src/plugins/debugger/snapshotwindow.cpp b/src/plugins/debugger/snapshotwindow.cpp
index 15ecd0b22e557d8b66e38b1cb5e385bd0489ca45..ab11f0fbfbef6e31bf7f60cf711cb7fff0a355e9 100644
--- a/src/plugins/debugger/snapshotwindow.cpp
+++ b/src/plugins/debugger/snapshotwindow.cpp
@@ -74,6 +74,7 @@ SnapshotWindow::SnapshotWindow(DebuggerManager *manager, QWidget *parent)
     QAction *act = theDebuggerAction(UseAlternatingRowColors);
     setWindowTitle(tr("Snapshots"));
 
+    setFrameStyle(QFrame::NoFrame);
     setAlternatingRowColors(act->isChecked());
     setRootIsDecorated(false);
     setIconSize(QSize(10, 10));
diff --git a/src/plugins/debugger/sourcefileswindow.cpp b/src/plugins/debugger/sourcefileswindow.cpp
index 37ac5f75aa366f763a2e9f9c41dc4e6784ec6e1e..5d321fc81c1944cf89e0be5a6467332a36c162ae 100644
--- a/src/plugins/debugger/sourcefileswindow.cpp
+++ b/src/plugins/debugger/sourcefileswindow.cpp
@@ -169,6 +169,7 @@ SourceFilesWindow::SourceFilesWindow(QWidget *parent)
     proxyModel->setSourceModel(m_model);
     setModel(proxyModel);
 
+    setFrameStyle(QFrame::NoFrame);
     setWindowTitle(tr("Source Files"));
     setSortingEnabled(true);
     setAlternatingRowColors(act->isChecked());
diff --git a/src/plugins/debugger/stackwindow.cpp b/src/plugins/debugger/stackwindow.cpp
index a0029b79a70bd027a178d683f7c86574548c414d..c5e3637801b91c225a0aff82c1706aa3fe332c9c 100644
--- a/src/plugins/debugger/stackwindow.cpp
+++ b/src/plugins/debugger/stackwindow.cpp
@@ -54,6 +54,7 @@ namespace Internal {
 StackWindow::StackWindow(DebuggerManager *manager, QWidget *parent)
     : QTreeView(parent), m_manager(manager), m_alwaysResizeColumnsToContents(false)
 {
+    setFrameStyle(QFrame::NoFrame);
     m_disassemblerAgent = new DisassemblerViewAgent(manager);
 
     QAction *act = theDebuggerAction(UseAlternatingRowColors);
diff --git a/src/plugins/debugger/threadswindow.cpp b/src/plugins/debugger/threadswindow.cpp
index 472cba0e4a03b97dce8290023b10e1605ac52a26..951a0eb03852dc8c8d82548385142d093f287645 100644
--- a/src/plugins/debugger/threadswindow.cpp
+++ b/src/plugins/debugger/threadswindow.cpp
@@ -43,6 +43,7 @@ ThreadsWindow::ThreadsWindow(QWidget *parent)
 {
     QAction *act = theDebuggerAction(UseAlternatingRowColors);
 
+    setFrameStyle(QFrame::NoFrame);
     setWindowTitle(tr("Thread"));
     setAlternatingRowColors(act->isChecked());
     setRootIsDecorated(false);
diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp
index 7d076e265943fa6a5dfc3f8cc628d1efbefaf24e..77c9f2bd9bb51a40f78d7d523b4e25e35ed45ce9 100644
--- a/src/plugins/debugger/watchwindow.cpp
+++ b/src/plugins/debugger/watchwindow.cpp
@@ -125,6 +125,7 @@ WatchWindow::WatchWindow(Type type, DebuggerManager *manager, QWidget *parent)
     m_grabbing = false;
 
     QAction *act = theDebuggerAction(UseAlternatingRowColors);
+    setFrameStyle(QFrame::NoFrame);
     setWindowTitle(tr("Locals and Watchers"));
     setAlternatingRowColors(act->isChecked());
     setIndentation(indentation() * 9/10);
diff --git a/src/plugins/designer/editorwidget.cpp b/src/plugins/designer/editorwidget.cpp
index cd6796e1e676ba50b304a90a123ee855bb73f099..d35cd0e05b4e9ab06cd3f7e9bfd40374dcaeecb9 100644
--- a/src/plugins/designer/editorwidget.cpp
+++ b/src/plugins/designer/editorwidget.cpp
@@ -35,6 +35,7 @@
 
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QDockWidget>
+#include <QtGui/QAbstractItemView>
 
 using namespace Designer::Constants;
 
@@ -59,6 +60,13 @@ EditorWidget::EditorWidget(FormEditorW *few, QWidget *parent) :
         QWidget *subWindow = subs[i];
         subWindow->setWindowTitle(subs[i]->windowTitle());
         m_designerDockWidgets[i] = addDockForWidget(subWindow);
+
+        // Since we have 1-pixel splitters, we generally want to remove
+        // frames around item views. So we apply this hack for now.
+        QList<QAbstractItemView*> frames = subWindow->findChildren<QAbstractItemView*>();
+        for (int i = 0 ; i< frames.count(); ++i)
+            frames[i]->setFrameStyle(QFrame::NoFrame);
+
     }
     resetToDefaultLayout();
 }
diff --git a/src/plugins/designer/formeditorstack.cpp b/src/plugins/designer/formeditorstack.cpp
index a21a81595ccc4b463342133c302aff834dd43624..af1f3813c1545404f086837ea9e438d593aa67bd 100644
--- a/src/plugins/designer/formeditorstack.cpp
+++ b/src/plugins/designer/formeditorstack.cpp
@@ -80,6 +80,11 @@ void FormEditorStack::add(const EditorData &data)
 
     if (Designer::Constants::Internal::debug)
         qDebug() << "FormEditorStack::add" << data.widgetHost;
+
+    // Since we have 1 pixel splitters we enforce no frame
+    // on the content widget
+    if (QFrame *frame = qobject_cast<QFrame*>(data.widgetHost))
+        frame->setFrameStyle(QFrame::NoFrame);
 }
 
 int FormEditorStack::indexOf(const QDesignerFormWindowInterface *fw) const