Index: scribus/ui/colorsandfills.cpp
===================================================================
--- scribus/ui/colorsandfills.cpp	(revision 25247)
+++ scribus/ui/colorsandfills.cpp	(working copy)
@@ -32,10 +32,12 @@
 #include <QDomDocument>
 #include <QEventLoop>
 #include <QFileDialog>
+#include <QFontMetrics>
 #include <QImageReader>
 #include <QMenu>
 #include <QMessageBox>
 #include <QScopedPointer>
+#include <QScreen>
 
 #include "cmykfw.h"
 #include "colorlistbox.h"
@@ -148,8 +150,28 @@
 	dataTree->expandItem(patternItems);
 	dataTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
 	dataTree->setCurrentItem(dataTree->topLevelItem(0));
+	dataTree->adjustSize(); // In order to get proper size
 	itemSelected(dataTree->currentItem());
 
+	QFontMetrics fontMetrics(dataTree->font());
+
+	int maxAdvance = 0;
+	for (QString colorName : m_colorList.keys())
+		maxAdvance = std::max(maxAdvance, fontMetrics.horizontalAdvance(colorName));
+	int maxTreeWidth = dataTree->screen()->size().width() * 0.5;
+	int idealTreeWidth = maxAdvance + 75;
+	idealTreeWidth += fontMetrics.horizontalAdvance(colorItems->child(0)->text(0)) / 2.0;
+	idealTreeWidth += dataTree->verticalScrollBar()->height();
+	idealTreeWidth = std::min(idealTreeWidth, maxTreeWidth);
+
+	QSize dataTreeSize = dataTree->size();
+	if (dataTreeSize.width() < idealTreeWidth)
+	{
+		int diffWidth = idealTreeWidth - dataTreeSize.width();
+		QSize diaSize = this->size();
+		this->resize(diaSize.width() + diffWidth, diaSize.height());
+	}
+
 	connect(dataTree, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(itemSelected(QTreeWidgetItem*)));
 	connect(dataTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(selEditColor(QTreeWidgetItem*)));
 	connect(dataTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged()));
