diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37c0cee24d2a1959323be5aaf4fec7d9d55a5794..5db9b8e8996eabe1fda3a5ca0d5efc57571634a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,11 +12,11 @@ if(NOT BORNAGAIN_PYTHON)
 endif()
 
 if(NOT BORNAGAIN_APP)
-    set(BORNAGAIN_APP ON)
+#    set(BORNAGAIN_APP ON)
 endif()
 
 if(NOT BORNAGAIN_GUI)
-    set(BORNAGAIN_GUI OFF)
+    set(BORNAGAIN_GUI ON)
 endif()
 
 #--- Path for additional cmake modules ---
@@ -39,5 +39,9 @@ if(ROOT_FOUND AND BORNAGAIN_APP)
     add_subdirectory(App)
 endif()
 
+if(BORNAGAIN_GUI)
+    add_subdirectory(GUI)
+endif()
+
 # packaging
 include(BornAgainCPack)
diff --git a/GUI/CMakeLists.txt b/GUI/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..846e93b4d6f9b9e3a257f8b6639c04729c247811
--- /dev/null
+++ b/GUI/CMakeLists.txt
@@ -0,0 +1,7 @@
+############################################################################
+# CMakeLists.txt file for building BornAgain/GUI libraries and executable
+############################################################################
+
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+
+add_subdirectory(externals/qt-manhattan-style)
diff --git a/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h b/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h
index f2b562dc5540640359f310b4f030d1c60a8df3f0..2c6fc745f656ec119ec9e2fc2079b8482c616e94 100644
--- a/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h
+++ b/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h
@@ -22,11 +22,13 @@ public:
     int maximum() const { return m_maximum; }
     int value() const { return m_value; }
     bool finished() const { return m_finished; }
-    void reset();
     void setRange(int minimum, int maximum);
     void setValue(int value);
     void setFinished(bool b);
 
+public slots:
+    void reset();
+
 private:
     QImage bar;
     QString m_text;
diff --git a/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp b/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp
index 6c868e73908669c5ac5186f619dbe5849c1a927a..81969c07118f32634c0ab218c38484a6a197dd5e 100644
--- a/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp
+++ b/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp
@@ -78,11 +78,12 @@ void TabWidget::setFrameVisible(bool visible)
     }
 }
 
-void TabWidget::addTab(const QString &name, QWidget *widget)
+void TabWidget::addTab(const QString &name, QWidget *widget, const QColor &color)
 {
     Q_ASSERT(widget);
     Tab tab;
     tab.name = name;
+    tab.color = color;
     tab.widget = widget;
     m_tabs.append(tab);
     m_stack->addWidget(widget);
@@ -93,11 +94,12 @@ void TabWidget::addTab(const QString &name, QWidget *widget)
     update();
 }
 
-void TabWidget::insertTab(int index, const QString &name, QWidget *widget)
+void TabWidget::insertTab(int index, const QString &name, QWidget *widget, const QColor &color)
 {
     Q_ASSERT(widget);
     Tab tab;
     tab.name = name;
+    tab.color = color;
     tab.widget = widget;
     m_tabs.insert(index, tab);
     m_stack->insertWidget(index, widget);
@@ -108,9 +110,9 @@ void TabWidget::insertTab(int index, const QString &name, QWidget *widget)
     update();
 }
 
-void TabWidget::removeTab(int index)
+QWidget* TabWidget::removeTab(int index)
 {
-    m_tabs.takeAt(index);
+    Tab tab = m_tabs.takeAt(index);
     if (index <= m_currentIndex) {
         --m_currentIndex;
         if (m_currentIndex < 0 && m_tabs.size() > 0)
@@ -122,6 +124,7 @@ void TabWidget::removeTab(int index)
         }
     }
     update();
+    return tab.widget;
 }
 
 int TabWidget::tabCount() const
@@ -346,7 +349,7 @@ void TabWidget::paintEvent(QPaintEvent *event)
             }
 
             x += MARGIN;
-            painter.setPen(Qt::black);
+            painter.setPen(tab.color);
             painter.drawText(x, baseline, tab.name);
             x += nameWidth.at(actualIndex);
             x += MARGIN;
@@ -368,7 +371,9 @@ void TabWidget::paintEvent(QPaintEvent *event)
                 painter.drawLine(x, 0, x, r.height());
 
             x += MARGIN;
-            painter.setPen(QColor(0, 0, 0, 190));
+            QColor penColor(tab.color);
+            penColor.setAlpha(190);
+            painter.setPen(penColor);
             painter.drawText(x + 1, baseline, tab.name);
             x += nameWidth.at(actualIndex);
             x += MARGIN;
diff --git a/GUI/externals/qt-manhattan-style/extensions/tabwidget.h b/GUI/externals/qt-manhattan-style/extensions/tabwidget.h
index 72dd8a0b21c2eeae74d3c68de384f55892926ddc..223c1e3eb71922c61560138bd931f0a3efccd67c 100644
--- a/GUI/externals/qt-manhattan-style/extensions/tabwidget.h
+++ b/GUI/externals/qt-manhattan-style/extensions/tabwidget.h
@@ -21,9 +21,9 @@ public:
 
     void setFrameVisible(bool visible);
 
-    void addTab(const QString &name, QWidget *widget);
-    void insertTab(int index, const QString &name, QWidget *widget);
-    void removeTab(int index);
+    void addTab(const QString &name, QWidget *widget, const QColor &color = Qt::black);
+    void insertTab(int index, const QString &name, QWidget *widget, const QColor &color = Qt::black);
+    QWidget* removeTab(int index);
     int tabCount() const;
     QString tabText(int index) const;
 
@@ -41,6 +41,7 @@ protected:
 private:
     struct Tab {
         QString name;
+        QColor color;
         QWidget* widget;
     };
     enum HitArea { HITNOTHING, HITOVERFLOW, HITTAB };
diff --git a/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp b/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp
index 41ca19b63f47a56c07d76b7859a51229a5097d63..3144b042061b087690f233d2c07a75fd0a21bb65 100644
--- a/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp
+++ b/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp
@@ -11,7 +11,6 @@
 #include <QLabel>
 #include <QTimer>
 
-
 namespace
 {
 
@@ -181,8 +180,7 @@ QListWidgetItem* find(const ListWidget* list, const QString& name)
             return item;
     }
 
-    //return nullptr;
-    return NULL;
+    return 0;
 }
 
 } // Anonymous namespace
diff --git a/GUI/externals/qt-manhattan-style/manhattanstyle.cpp b/GUI/externals/qt-manhattan-style/manhattanstyle.cpp
index 2ac03a25dd4fe1913ba435a7689b45461d49b3f9..cf59291bf1019d6804b42826c6821c26a76ce12a 100644
--- a/GUI/externals/qt-manhattan-style/manhattanstyle.cpp
+++ b/GUI/externals/qt-manhattan-style/manhattanstyle.cpp
@@ -126,6 +126,24 @@ bool lightColored(const QWidget *widget)
     return false;
 }
 
+bool hasProperty(const QWidget *widget, const QByteArray& name)
+{
+    if (!widget)
+        return false;
+
+    // Don't style dialogs or explicitly ignored widgets
+    if ((widget->window()->windowFlags() & Qt::WindowType_Mask) == Qt::Dialog)
+        return false;
+
+    const QWidget *p = widget;
+    while (p) {
+        if (p->property(name).isValid())
+            return true;
+        p = p->parentWidget();
+    }
+    return false;
+}
+
 class ManhattanStylePrivate
 {
 public:
@@ -291,7 +309,7 @@ void ManhattanStyle::polish(QWidget *widget)
             widget->setMaximumHeight(Utils::StyleHelper::navigationWidgetHeight() - 2);
         }
         else if (qobject_cast<QLabel*>(widget))
-            widget->setPalette(panelPalette(widget->palette()));
+            widget->setPalette(panelPalette(widget->palette(), lightColored(widget)));
         else if (widget->property("panelwidget_singlerow").toBool())
             widget->setFixedHeight(Utils::StyleHelper::navigationWidgetHeight());
         else if (qobject_cast<QStatusBar*>(widget))
@@ -630,7 +648,8 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
 
         if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(option)) {
             QStyleOptionTabV3 adjustedTab = *tab;
-            if (tab->cornerWidgets == QStyleOptionTab::NoCornerWidgets && (
+            if (!hasProperty(widget, "noTabBarShapeAdjustment") &&
+                tab->cornerWidgets == QStyleOptionTab::NoCornerWidgets && (
                     tab->position == QStyleOptionTab::Beginning ||
                     tab->position == QStyleOptionTab::OnlyOneTab))
             {
@@ -727,7 +746,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
                 } else {
                     painter->setOpacity(0.8);
                 }
-                painter->setPen(Utils::StyleHelper::panelTextColor());
+                painter->setPen(Utils::StyleHelper::panelTextColor(lightColored(widget)));
                 painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text);
 
                 painter->restore();