diff --git a/scribus/commonstrings.cpp b/scribus/commonstrings.cpp
index cb6f54c1f..66f1a413e 100644
--- a/scribus/commonstrings.cpp
+++ b/scribus/commonstrings.cpp
@@ -99,6 +99,10 @@ QString CommonStrings::trPageLocMiddle;
 QString CommonStrings::trPageLocMiddleLeft;
 QString CommonStrings::trPageLocMiddleRight;
 QString CommonStrings::trPageLocRight;
+QString CommonStrings::docLoc_RTL_Binding;
+QString CommonStrings::docLoc_LTR_Binding;
+QString CommonStrings::trDocLoc_RTL_Binding;
+QString CommonStrings::trDocLoc_LTR_Binding;
 
 QString CommonStrings:: masterPageNormal;
 QString CommonStrings:: trMasterPageNormal;
@@ -240,7 +244,7 @@ const QString& CommonStrings::translatePageSetString(const QString &untrString)
 
 const QString& CommonStrings::translatePageSetLocString(const QString &untrString)
 {
-	if (untrString == pageLocLeft)
+    if (untrString == pageLocLeft)
 		return trPageLocLeft;
 	if (untrString == pageLocMiddle)
 		return trPageLocMiddle;
@@ -250,7 +254,25 @@ const QString& CommonStrings::translatePageSetLocString(const QString &untrStrin
 		return trPageLocMiddleRight;
 	if (untrString == pageLocRight)
 		return trPageLocRight;
-	return untrString;
+    return untrString;
+}
+
+const QString& CommonStrings::translateDocBindingLocString(const QString &untrString)
+{
+    if (untrString == docLoc_RTL_Binding)
+        return trDocLoc_RTL_Binding;
+    if (untrString == docLoc_LTR_Binding)
+        return trDocLoc_LTR_Binding;
+    return untrString;
+}
+
+const QString& CommonStrings::untranslateDocBindingString(const QString &trString)
+{
+    if (trString == trDocLoc_RTL_Binding)
+        return docLoc_RTL_Binding;
+    if (trString == trDocLoc_LTR_Binding)
+        return docLoc_LTR_Binding;
+    return trString;
 }
 
 const QString& CommonStrings::untranslatePageSetString(const QString &trString)
@@ -373,6 +395,11 @@ void CommonStrings::languageChange()
 	CommonStrings::trPageLocMiddleRight = tr( "Middle Right", "Middle Right page location" );
 	CommonStrings::trPageLocRight       = tr( "Right Page", "Right page location" );
 
+    CommonStrings::docLoc_RTL_Binding   = "Right to Left";
+    CommonStrings::docLoc_LTR_Binding   = "Left to Right";
+    CommonStrings::trDocLoc_RTL_Binding = tr("Right to Left", "Right to Left Document binding direction");
+    CommonStrings::trDocLoc_LTR_Binding = tr("Left to Right", "Left to Right Document Binding direction");
+
 	CommonStrings::masterPageNormal         = "Normal";
 	CommonStrings::trMasterPageNormal       = tr( "Normal", "Default single master page" );
 	CommonStrings::masterPageNormalLeft     = "Normal Left";
diff --git a/scribus/commonstrings.h b/scribus/commonstrings.h
index 05006846a..6cf54bdb3 100644
--- a/scribus/commonstrings.h
+++ b/scribus/commonstrings.h
@@ -64,13 +64,25 @@ public:
 	 * @param untrString "untranslated" string
 	 * @return translated string
 	 */
-	static const QString& translatePageSetLocString(const QString &untrString);
+    static const QString& translatePageSetLocString(const QString &untrString);
+    /**
+     * \brief Return the translated Document Binding direction string if given the "untranslated" one
+     * @param untrString "untranslated" string
+     * @return translated string
+     */
+    static const QString& translateDocBindingLocString(const QString &untrString);
 	/**
 	 * \brief Return the untranslated Page Set string if given the translated one
 	 * @param trString translated string
 	 * @return "untranslated" string
 	 */
 	static const QString& untranslatePageSetString(const QString &trString);
+    /**
+     * \brief Return the untranslated Document Binding direction string if given the translated one
+     * @param trString translated string
+     * @return "untranslated" string
+     */
+    static const QString& untranslateDocBindingString(const QString &trString);
 	/**
 	 * \brief Return the untranslated Page Set Location string if given the translated one
 	 * @param trString translated string
@@ -165,6 +177,12 @@ public:
 	static QString trPageLocMiddleRight;
 	static QString trPageLocRight;
 
+    // Document Binding Direction
+    static QString docLoc_RTL_Binding;
+    static QString trDocLoc_RTL_Binding;
+    static QString docLoc_LTR_Binding;
+    static QString trDocLoc_LTR_Binding;
+
 	//Master Page Default Names
 	static QString masterPageNormal;
 	static QString trMasterPageNormal;
diff --git a/scribus/plugins/fileloader/scribus150format/scribus150format.cpp b/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
index 076f3f200..bd889cbb7 100644
--- a/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
+++ b/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
@@ -3488,7 +3488,6 @@ bool Scribus150Format::readPDFOptions(ScribusDoc* doc, ScXmlStreamReader& reader
 	// Fixme: check input pdf version
 	doc->pdfOptions().Version    = (PDFVersion::Version) attrs.valueAsInt("Version");
 	doc->pdfOptions().Resolution = attrs.valueAsInt("Resolution");
-	doc->pdfOptions().Binding    = attrs.valueAsInt("Binding");
 	doc->pdfOptions().fileName   = "";
 
 	doc->pdfOptions().FontEmbedding = (PDFOptions::PDFFontEmbedding) attrs.valueAsInt("FontEmbedding", 0);
diff --git a/scribus/plugins/fileloader/scribus171format/scribus171format.cpp b/scribus/plugins/fileloader/scribus171format/scribus171format.cpp
index 1eb91e9f3..d68740726 100644
--- a/scribus/plugins/fileloader/scribus171format/scribus171format.cpp
+++ b/scribus/plugins/fileloader/scribus171format/scribus171format.cpp
@@ -2482,6 +2482,7 @@ void Scribus171Format::readDocAttributes(ScribusDoc* doc, const ScXmlStreamAttri
 		m_Doc->setPageOrientation(attrs.valueAsInt("ORIENTATION", 0));
 		m_Doc->FirstPnum = attrs.valueAsInt("FIRSTNUM", 1);
 		m_Doc->setPagePositioning(attrs.valueAsInt("BOOK", 0));
+		m_Doc->setDocBindingDirection(attrs.valueAsInt("BINDINGDIRECTION", 0));
 
 		m_Doc->setUsesAutomaticTextFrames( attrs.valueAsInt("AUTOTEXT") );
 		m_Doc->PageSp = attrs.valueAsInt("AUTOSPALTEN");
@@ -2548,6 +2549,7 @@ void Scribus171Format::readDocAttributes(ScribusDoc* doc, const ScXmlStreamAttri
 		m_Doc->setPageOrientation(attrs.valueAsInt("PageOrientation", 0));
 		m_Doc->FirstPnum = attrs.valueAsInt("FirstPageNumber", 1);
 		m_Doc->setPagePositioning(attrs.valueAsInt("PagePositioning", 0));
+		m_Doc->setDocBindingDirection(attrs.valueAsInt("BindingDirection", 0));
 
 		m_Doc->setUsesAutomaticTextFrames( attrs.valueAsInt("AutomaticTextFrames") );
 		m_Doc->PageSp = attrs.valueAsInt("AutomaticTextFrameColumnCount");
diff --git a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
index 76185227d..41df2f9c6 100644
--- a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
+++ b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
@@ -336,6 +336,7 @@ bool Scribus171Format::saveFile(const QString & fileName, const FileFormat & /*
 	docu.writeAttribute("PageSize", m_Doc->pageSize());
 	docu.writeAttribute("FirstPageNumber", m_Doc->FirstPnum);
 	docu.writeAttribute("PagePositioning", m_Doc->pagePositioning());
+	docu.writeAttribute("BindingDirection", m_Doc->docBindingDirection());
 	if (m_Doc->usesAutomaticTextFrames())
 		docu.writeAttribute("AutomaticTextFrames", 1);
 	docu.writeAttribute("AutomaticTextFrameColumnCount", m_Doc->PageSp);
diff --git a/scribus/prefsmanager.cpp b/scribus/prefsmanager.cpp
index eccd2aaf9..61a6a2ab2 100644
--- a/scribus/prefsmanager.cpp
+++ b/scribus/prefsmanager.cpp
@@ -325,6 +325,7 @@ void PrefsManager::initDefaults()
 		appPrefs.docSetupPrefs.language = "en_GB";
 	appPrefs.docSetupPrefs.pageSize = LocaleManager::instance().pageSizeForLocale(ScQApp->currGUILanguage());
 	appPrefs.docSetupPrefs.pageOrientation = 0;
+	appPrefs.docSetupPrefs.docBindingDirection = 0;
 	PageSize defaultPageSize(appPrefs.docSetupPrefs.pageSize);
 	appPrefs.docSetupPrefs.pageWidth = defaultPageSize.width();
 	appPrefs.docSetupPrefs.pageHeight = defaultPageSize.height();
@@ -1376,7 +1377,8 @@ bool PrefsManager::writePref(const QString& filePath)
 	deDocumentSetup.setAttribute("Language", appPrefs.docSetupPrefs.language);
 	deDocumentSetup.setAttribute("UnitIndex", appPrefs.docSetupPrefs.docUnitIndex);
 	deDocumentSetup.setAttribute("PageSize", appPrefs.docSetupPrefs.pageSize);
-	deDocumentSetup.setAttribute("PageOrientation", appPrefs.docSetupPrefs.pageOrientation);
+    deDocumentSetup.setAttribute("PageBinding", appPrefs.docSetupPrefs.docBindingDirection);
+    deDocumentSetup.setAttribute("PageOrientation", appPrefs.docSetupPrefs.pageOrientation);
 	deDocumentSetup.setAttribute("PageWidth", ScCLocale::toQStringC(appPrefs.docSetupPrefs.pageWidth));
 	deDocumentSetup.setAttribute("PageHeight", ScCLocale::toQStringC(appPrefs.docSetupPrefs.pageHeight));
 	deDocumentSetup.setAttribute("MarginTop", ScCLocale::toQStringC(appPrefs.docSetupPrefs.margins.top()));
@@ -2071,6 +2073,7 @@ bool PrefsManager::readPref(const QString& filePath)
 			appPrefs.docSetupPrefs.docUnitIndex = dc.attribute("UnitIndex", "0").toInt();
 			PageSize ps( dc.attribute("PageSize", PageSize::defaultSizesList().at(1)) );
 			appPrefs.docSetupPrefs.pageSize = (ps.name() == CommonStrings::customPageSize ) ? PageSize::defaultSizesList().at(1) : ps.name();
+            appPrefs.docSetupPrefs.docBindingDirection = dc.attribute("PageBinding", "0").toInt();
 			appPrefs.docSetupPrefs.pageOrientation = dc.attribute("PageOrientation", "0").toInt();
 			appPrefs.docSetupPrefs.pageWidth   = ScCLocale::toDoubleC(dc.attribute("PageWidth"), 595.0);
 			appPrefs.docSetupPrefs.pageHeight  = ScCLocale::toDoubleC(dc.attribute("PageHeight"), 842.0);
diff --git a/scribus/prefsstructs.h b/scribus/prefsstructs.h
index bbf957683..73acbc921 100644
--- a/scribus/prefsstructs.h
+++ b/scribus/prefsstructs.h
@@ -168,6 +168,7 @@ struct DocumentSetupPrefs
 	bool AutoSaveLocation;
 	QString AutoSaveDir;
 	bool saveCompressed;
+	int docBindingDirection;
 };
 
 //Guides
diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp
index d82ebbab1..d83a07ebb 100644
--- a/scribus/scribus.cpp
+++ b/scribus/scribus.cpp
@@ -2008,7 +2008,8 @@ void ScribusMainWindow::startUpDialog()
 		if (dia->tabSelected() == NewDocDialog::NewDocumentTab)
 		{
 			int facingPages = dia->choosenLayout();
-			int firstPage = dia->layoutFirstPage();
+            int firstPage = dia->layoutFirstPage();
+            int docBindingDirection = dia->bindingDirection();
 			docSet = dia->startDocSetup->isChecked();
 			double topMargin = dia->marginGroup->margins().top();
 			double bottomMargin = dia->marginGroup->margins().bottom();
@@ -2022,7 +2023,7 @@ void ScribusMainWindow::startUpDialog()
 			int orientation = dia->orientation();
 			int pageCount = dia->pageCountSpinBox->value();
 			QString pagesize = dia->pageSizeName();
-			doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->unitOfMeasureComboBox->currentIndex(), firstPage, orientation, 1, pagesize, true, pageCount, true, dia->marginGroup->marginPreset());
+			doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->unitOfMeasureComboBox->currentIndex(), firstPage, orientation, 1, pagesize, true, pageCount, true, dia->marginGroup->marginPreset(), docBindingDirection);
 			doc->setPageSetFirstPage(facingPages, firstPage);
 			doc->bleeds()->set(dia->bleedTop(), dia->bleedLeft(), dia->bleedBottom(), dia->bleedRight());
 			HaveNewDoc();
@@ -2085,7 +2086,8 @@ bool ScribusMainWindow::slotFileNew()
 
 	int facingPages = dia->choosenLayout();
 	int firstPage = dia->layoutFirstPage();
-	bool docSet = dia->startDocSetup->isChecked();
+    int docBindingDirection = dia->bindingDirection();
+    bool docSet = dia->startDocSetup->isChecked();
 	double topMargin = dia->marginGroup->margins().top();
 	double bottomMargin = dia->marginGroup->margins().bottom();
 	double leftMargin = dia->marginGroup->margins().left();
@@ -2099,7 +2101,7 @@ bool ScribusMainWindow::slotFileNew()
 	int pageCount = dia->pageCountSpinBox->value();
 	QString pagesize = dia->pageSizeName();
 
-	if (doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->unitOfMeasureComboBox->currentIndex(), firstPage, orientation, 1, pagesize, true, pageCount, true, dia->marginGroup->marginPreset()))
+	if (doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->unitOfMeasureComboBox->currentIndex(), firstPage, orientation, 1, pagesize, true, pageCount, true, dia->marginGroup->marginPreset(), docBindingDirection))
 	{
 		doc->setPageSetFirstPage(facingPages, firstPage);
 		doc->bleeds()->set(dia->bleedTop(), dia->bleedLeft(), dia->bleedBottom(), dia->bleedRight());
@@ -2111,8 +2113,7 @@ bool ScribusMainWindow::slotFileNew()
 		// doc changing should be rewritten maybe... maybe later...
 		doc->setModified(false);
 		updateActiveWindowCaption(doc->documentFileName());
-	}
-
+    }
 	if (docSet)
 		slotDocSetup();
 	return retVal;
@@ -2124,7 +2125,8 @@ ScribusDoc *ScribusMainWindow::newDoc(double width, double height, double topMar
 	return doFileNew(width, height, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, columnCount, autoTextFrames, pageArrangement, unitIndex, firstPageLocation, orientation, firstPageNumber, defaultPageSize, requiresGUI, pageCount, showView, marginPreset);
 }
 
-ScribusDoc *ScribusMainWindow::doFileNew(double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin, double columnDistance, double columnCount, bool autoTextFrames, int pageArrangement, int unitIndex, int firstPageLocation, int orientation, int firstPageNumber, const QString& defaultPageSize, bool requiresGUI, int pageCount, bool showView, int marginPreset)
+ScribusDoc *ScribusMainWindow::doFileNew(double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin, double columnDistance, double columnCount, bool autoTextFrames, int pageArrangement, int unitIndex, int firstPageLocation, int orientation, int firstPageNumber, const QString& defaultPageSize, bool requiresGUI, int pageCount, bool showView, int marginPreset, int
+                                         docBindingDircetion)
 {
 	if (HaveDoc)
 		outlinePalette->buildReopenVals();
@@ -2172,7 +2174,7 @@ ScribusDoc *ScribusMainWindow::doFileNew(double width, double height, double top
 			doc->PageColors = m_prefsManager.appPrefs.colorPrefs.DColors;
 	}
 	tempDoc->PageColors.ensureDefaultColors();
-	tempDoc->setup(unitIndex, pageArrangement, firstPageLocation, orientation, firstPageNumber, defaultPageSize, newDocName);
+	tempDoc->setup(unitIndex, pageArrangement, firstPageLocation, orientation, firstPageNumber, defaultPageSize, newDocName, docBindingDircetion);
 	if (requiresGUI)
 	{
 		HaveDoc++;
@@ -2361,6 +2363,7 @@ void ScribusMainWindow::extrasMenuAboutToShow()
 			}
 			allItems.clear();
 		}
+        //doc->setBinding(bind);
 	}
 	scrActions["extrasManageImages"]->setEnabled(enablePicManager);
 }
diff --git a/scribus/scribus.h b/scribus/scribus.h
index 566c4eb2c..2321ebb09 100644
--- a/scribus/scribus.h
+++ b/scribus/scribus.h
@@ -152,7 +152,8 @@ public:
 	inline bool scriptIsRunning(void) const { return (m_ScriptRunning > 0); }
 	inline void setScriptRunning(bool value) { m_ScriptRunning += (value ? 1 : -1); }
 
-	ScribusDoc* doFileNew(double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin, double columnDistance, double columnCount, bool autoTextFrames, int pageArrangement, int unitIndex, int firstPageLocation, int orientation, int firstPageNumber, const QString& defaultPageSize, bool requiresGUI, int pageCount = 1, bool showView = true, int marginPreset = 0);
+	ScribusDoc* doFileNew(double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin, double columnDistance, double columnCount, bool autoTextFrames, int pageArrangement, int unitIndex, int firstPageLocation, int orientation, int firstPageNumber, const QString& defaultPageSize, bool requiresGUI, int pageCount = 1, bool showView = true, int marginPreset = 0, int
+	                      docBindingDircetion = 0);
 	ScribusDoc* newDoc(double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin, double columnDistance, double columnCount, bool autoTextFrames, int pageArrangement, int unitIndex, int firstPageLocation, int orientation, int firstPageNumber, const QString& defaultPageSize, bool requiresGUI, int pageCount = 1, bool showView = true, int marginPreset = 0);
 	bool DoFileSave(const QString& fileName, QString* savedFileName = nullptr, uint formatID = FORMATID_CURRENTEXPORT);
 
diff --git a/scribus/scribusdoc.cpp b/scribus/scribusdoc.cpp
index 3a2f61254..127016ed0 100644
--- a/scribus/scribusdoc.cpp
+++ b/scribus/scribusdoc.cpp
@@ -678,7 +678,8 @@ QList<PageItem*> *ScribusDoc::parentGroup(PageItem* item, QList<PageItem*> *list
 	return retList;
 }
 
-void ScribusDoc::setup(int unitIndex, int fp, int firstLeft, int orientation, int firstPageNumber, const QString& defaultPageSize, const QString& documentName)
+void ScribusDoc::setup(int unitIndex, int fp, int firstLeft, int orientation, int firstPageNumber, const QString& defaultPageSize, const QString& documentName, int
+                       docBindingDirection)
 {
 	m_docPrefsData.docSetupPrefs.docUnitIndex = unitIndex;
 	setPageSetFirstPage(fp, firstLeft);
@@ -686,6 +687,7 @@ void ScribusDoc::setup(int unitIndex, int fp, int firstLeft, int orientation, in
 	m_docPrefsData.docSetupPrefs.pageSize = defaultPageSize;
 	FirstPnum = firstPageNumber;
 	m_docPrefsData.docSetupPrefs.pagePositioning = fp;
+	m_docPrefsData.docSetupPrefs.docBindingDirection = docBindingDirection;
 	setDocumentFileName(documentName);
 	HasCMS = false;
 	if (!pdfOptions().UseLPI)
@@ -6059,17 +6061,25 @@ struct oldPageVar
 // without running this monster
 void ScribusDoc::reformPages(bool moveObjects)
 {
-	QMap<uint, oldPageVar> pageTable;
-	struct oldPageVar oldPg;
-	int counter = pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].FirstPage;
-	int rowcounter = 0;
-	double maxXPos = 0.0;
-	double maxYPos = 0.0;
-	double currentXPos = m_docPrefsData.displayPrefs.scratch.left();
-	double currentYPos = m_docPrefsData.displayPrefs.scratch.top();
-	double lastYPos = Pages->at(0)->initialHeight();
-	currentXPos += (Pages->at(0)->initialWidth() + m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
-	// currentXPos += (m_docPrefsData.docSetupPrefs.pageWidth + m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
+    QMap<uint, oldPageVar> pageTable;
+    struct oldPageVar oldPg;
+    int counter = pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].FirstPage;
+    int rowcounter = 0;
+    double maxXPos = 0.0;
+    double maxYPos = 0.0;
+    double currentXPos = m_docPrefsData.displayPrefs.scratch.left();
+    double currentYPos = m_docPrefsData.displayPrefs.scratch.top();
+    double lastYPos = Pages->at(0)->initialHeight();
+    currentXPos += (Pages->at(0)->initialWidth() + m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
+	int rtlBinding = m_docPrefsData.docSetupPrefs.docBindingDirection;
+    if (rtlBinding == 1)
+    {
+	    counter = !counter;
+	    currentXPos = m_docPrefsData.displayPrefs.scratch.left() + m_docPrefsData.docSetupPrefs.pageWidth;
+	    currentXPos -= (m_docPrefsData.docSetupPrefs.pageWidth + m_docPrefsData.displayPrefs.pageGapHorizontal) *
+		    counter;
+    }
+
 
 	ScPage* page;
 	int docPageCount = Pages->count();
@@ -6081,6 +6091,7 @@ void ScribusDoc::reformPages(bool moveObjects)
 		oldPg.newPg = i;
 		pageTable.insert(page->pageNr(), oldPg);
 		page->setPageNr(i);
+
 		if (masterPageMode())
 		{
 			page->setXOffset(m_docPrefsData.displayPrefs.scratch.left());
@@ -6109,29 +6120,64 @@ void ScribusDoc::reformPages(bool moveObjects)
 			page->setYOffset(currentYPos);
 			if (counter < pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns-1)
 			{
-				currentXPos += page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+                if (rtlBinding == 1)
+				{
+					currentXPos -= page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+				}
+				else
+				{
+					currentXPos += page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+				}
 				lastYPos = qMax(lastYPos, page->height());
 				if (counter == 0)
 				{
-					page->Margins.setLeft(page->initialMargins.right());
-					page->Margins.setRight(page->initialMargins.left());
+                    if (rtlBinding == 1)
+					{
+						page->Margins.setLeft(page->initialMargins.left());
+						page->Margins.setRight(page->initialMargins.right());
+					}
+					else
+					{
+						page->Margins.setLeft(page->initialMargins.right());
+						page->Margins.setRight(page->initialMargins.left());
+					}
 				}
 				else
 				{
-					page->Margins.setLeft(page->initialMargins.left());
-					page->Margins.setRight(page->initialMargins.left());
+                    if (rtlBinding == 1)
+					{
+						page->Margins.setLeft(page->initialMargins.right());
+						page->Margins.setRight(page->initialMargins.right());
+					}
+					else
+					{
+						page->Margins.setLeft(page->initialMargins.left());
+						page->Margins.setRight(page->initialMargins.left());
+					}
 				}
 			}
 			else
 			{
-				currentXPos = m_docPrefsData.displayPrefs.scratch.left();
+                if (rtlBinding == 1)
+					currentXPos = m_docPrefsData.displayPrefs.scratch.left() + m_docPrefsData.docSetupPrefs.pageWidth;
+				else
+					currentXPos = m_docPrefsData.displayPrefs.scratch.left();
+
 				if (pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns > 1)
 					currentYPos += qMax(lastYPos, page->height())+m_docPrefsData.displayPrefs.pageGapVertical;
 				else
 					currentYPos += page->height()+m_docPrefsData.displayPrefs.pageGapVertical;
 				lastYPos = 0;
-				page->Margins.setRight(page->initialMargins.right());
-				page->Margins.setLeft(page->initialMargins.left());
+                if (rtlBinding == 1)
+				{
+					page->Margins.setRight(page->initialMargins.left());
+					page->Margins.setLeft(page->initialMargins.right());
+				}
+				else
+				{
+					page->Margins.setRight(page->initialMargins.right());
+					page->Margins.setLeft(page->initialMargins.left());
+				}
 			}
 			counter++;
 			if (counter > pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns-1)
@@ -6147,6 +6193,9 @@ void ScribusDoc::reformPages(bool moveObjects)
 		maxXPos = qMax(maxXPos, page->xOffset()+page->width()+m_docPrefsData.displayPrefs.scratch.right());
 		maxYPos = qMax(maxYPos, page->yOffset()+page->height()+m_docPrefsData.displayPrefs.scratch.bottom());
 	}
+    if (rtlBinding == 1)
+    	setLoading(false);
+
 	if (!isLoading())
 	{
 		QList<PageItem*> weldedItems;
diff --git a/scribus/scribusdoc.h b/scribus/scribusdoc.h
index 2c0f8e5d1..c4ff7021c 100644
--- a/scribus/scribusdoc.h
+++ b/scribus/scribusdoc.h
@@ -105,7 +105,7 @@ public:
 	bool inASpecialEditMode() const;
 	QList<PageItem*> getAllItems(const QList<PageItem*> &items) const;
 	QList<PageItem*> *parentGroup(PageItem* item, QList<PageItem*> *list);
-	void setup(int, int, int, int, int, const QString&, const QString&);
+	void setup(int, int, int, int, int, const QString&, const QString&, int docBindingDirection = 0);
 	void setLoading(bool);
 	bool isLoading() const;
 	void setModified(bool);
@@ -215,6 +215,8 @@ public:
 
 	int pageOrientation() const { return m_docPrefsData.docSetupPrefs.pageOrientation; }
 	void setPageOrientation(int o) { m_docPrefsData.docSetupPrefs.pageOrientation = o; }
+    int docBindingDirection() const {return m_docPrefsData.docSetupPrefs.docBindingDirection; }
+    void setDocBindingDirection(int x) {m_docPrefsData.docSetupPrefs.docBindingDirection = x; }
 	int pagePositioning() const { return m_docPrefsData.docSetupPrefs.pagePositioning; }
 	void setPagePositioning(int p) { m_docPrefsData.docSetupPrefs.pagePositioning = p; }
 
diff --git a/scribus/ui/newdocdialog.cpp b/scribus/ui/newdocdialog.cpp
index 3b0486d09..b5e3bc591 100644
--- a/scribus/ui/newdocdialog.cpp
+++ b/scribus/ui/newdocdialog.cpp
@@ -68,9 +68,17 @@ NewDocDialog::NewDocDialog(QWidget* parent, const QStringList& recentDocs, bool
 	buttonHorizontal->setIcon(iconManager.loadIcon("page-orientation-horizontal"));
 	buttonSinglePage->setIcon(iconManager.loadIcon("page-simple"));
 	buttonDoublePageLeft->setIcon(iconManager.loadIcon("page-first-left"));
-	buttonDoublePageRight->setIcon(iconManager.loadIcon("page-first-right"));
+	buttonDoublePageRight->setIcon(iconManager.loadIcon("page-doublesided"));
+	buttonLTRBinding->setIcon(iconManager.loadIcon("text-direction-ltr"));
+	buttonRTLBinding->setIcon(iconManager.loadIcon("text-direction-rtl"));
 	labelColumns->setPixmap(iconManager.loadPixmap("paragraph-columns"));
 
+	// for now we just hide buttonDoublePageLeft button
+	buttonDoublePageLeft->setVisible(false);
+	// disable LTR & RTL unless facing page is enabled
+	buttonLTRBinding->setDisabled(true);
+	buttonRTLBinding->setDisabled(true);
+
 	createNewDocPage();
 	if (startUp)
 	{
@@ -98,6 +106,8 @@ NewDocDialog::NewDocDialog(QWidget* parent, const QStringList& recentDocs, bool
 	buttonSinglePage->setToolTip(tr("Single page document"));
 	buttonDoublePageLeft->setToolTip(tr("Double page document, with the first page on the left side"));
 	buttonDoublePageRight->setToolTip(tr("Double page document, with the first page on the right side"));
+	buttonLTRBinding->setToolTip(tr("LTR binding direction"));
+	buttonRTLBinding->setToolTip(tr("RTL Binding direction"));
 	widthSpinBox->setToolTip( tr( "Width of the document's pages, editable if you have chosen a custom page size" ) );
 	heightSpinBox->setToolTip( tr( "Height of the document's pages, editable if you have chosen a custom page size" ) );
 	pageCountSpinBox->setToolTip( tr( "Initial number of pages of the document" ) );
@@ -133,6 +143,7 @@ void NewDocDialog::createNewDocPage()
 {
 	int orientation = prefsManager.appPrefs.docSetupPrefs.pageOrientation;
 	int pagePositioning = prefsManager.appPrefs.docSetupPrefs.pagePositioning;
+	int docBindingDirection = prefsManager.appPrefs.docSetupPrefs.docBindingDirection;
 	QString pageSize = prefsManager.appPrefs.docSetupPrefs.pageSize;
 	double pageHeight = prefsManager.appPrefs.docSetupPrefs.pageHeight;
 	double pageWidth = prefsManager.appPrefs.docSetupPrefs.pageWidth;
@@ -149,12 +160,16 @@ void NewDocDialog::createNewDocPage()
 	pageOrientationButtons->button(orientation)->setChecked(true);
 
 	pageLayoutButtons = new QButtonGroup();
+	pageLayoutButtons->setExclusive(false);
 	pageLayoutButtons->addButton(buttonSinglePage, 0);
 	pageLayoutButtons->addButton(buttonDoublePageLeft, 1);
 	pageLayoutButtons->addButton(buttonDoublePageRight, 2);
+	pageLayoutButtons->addButton(buttonLTRBinding, 3);
+	pageLayoutButtons->addButton(buttonRTLBinding, 4);
 	if (pagePositioning == singlePage)
 	{
 		pageLayoutButtons->button(0)->setChecked(true);
+		pageLayoutButtons->button(1)->setChecked(true);
 	}
 	else if (prefsManager.appPrefs.pageSets[pagePositioning].FirstPage == 0)
 	{
@@ -165,6 +180,11 @@ void NewDocDialog::createNewDocPage()
 		pageLayoutButtons->button(2)->setChecked(true);
 	}
 
+	if (docBindingDirection == 1)
+		pageLayoutButtons->button(4)->setChecked(true);
+	else
+		pageLayoutButtons->button(3)->setChecked(true);
+
 	listPageFormats->setValues(pageSize, orientation, PageSizeInfo::Preferred, PageSizeList::NameAsc);
 
 	pageSizeSelector->setHasFormatSelector(false);
@@ -216,6 +236,7 @@ void NewDocDialog::createNewDocPage()
 	setDocLayout(pagePositioning);
 	setSize(pageSize);
 	setOrientation(orientation);
+	setDocBindingDirection(docBindingDirection);
 
 	numberOfCols->setButtonSymbols( QSpinBox::UpDownArrows );
 	numberOfCols->setMinimum( 1 );
@@ -524,18 +545,48 @@ void NewDocDialog::setLayout(int layoutId)
 	switch (layoutId)
 	{
 		case 0:
+			pageLayoutButtons->button(2)->setChecked(false);
+			pageLayoutButtons->button(3)->setDisabled(true);
+			pageLayoutButtons->button(4)->setDisabled(true);
 			setDocLayout(0);
-		break;
+			break;
 		case 1:
+			// pageLayoutButtons->button(2)->setChecked(false);
+			// pageLayoutButtons->button(3)->setDisabled(true);
+			// pageLayoutButtons->button(4)->setDisabled(true);
 			setDocLayout(1);
 			pagePreview->setFirstPage(0);
 			setDocFirstPage(0);
-		break;
+			break;
 		case 2:
+			pageLayoutButtons->button(0)->setChecked(false);
+			pageLayoutButtons->button(3)->setDisabled(false);
+			pageLayoutButtons->button(4)->setDisabled(false);
+			pageLayoutButtons->button(3)->setChecked(true);
+			pageLayoutButtons->button(4)->setChecked(false);
+
 			setDocLayout(1);
 			pagePreview->setFirstPage(1);
 			setDocFirstPage(1);
-		break;
+			break;
+		case 3:
+			pageLayoutButtons->button(0)->setChecked(false);
+			pageLayoutButtons->button(2)->setChecked(true);
+			// pageLayoutButtons->button(3)->setChecked(true);
+			pageLayoutButtons->button(4)->setChecked(false);
+			setDocLayout(1);
+			setDocBindingDirection(0);
+			setDocFirstPage(1);
+			break;
+		case 4:
+			pageLayoutButtons->button(0)->setChecked(false);
+			pageLayoutButtons->button(2)->setChecked(true);
+			pageLayoutButtons->button(3)->setChecked(false);
+
+			setDocLayout(1);
+			setDocBindingDirection(1);
+			setDocFirstPage(0);
+			break;
 	}
 }
 
@@ -605,6 +656,11 @@ void NewDocDialog::setDocFirstPage(int firstPage)
 	m_layoutFirstPage = firstPage;
 }
 
+void NewDocDialog::setDocBindingDirection(int bindingDirection)
+{
+	m_bindingDirection = bindingDirection;
+}
+
 void NewDocDialog::recentDocListBox_doubleClicked()
 {
 	/* Yep. There is nothing to solve. ScribusMainWindow handles all
diff --git a/scribus/ui/newdocdialog.h b/scribus/ui/newdocdialog.h
index a65550f3d..c2399cf98 100644
--- a/scribus/ui/newdocdialog.h
+++ b/scribus/ui/newdocdialog.h
@@ -77,6 +77,7 @@ public:
 	int orientation() const { return m_orientation;}
 	int choosenLayout() const { return m_choosenLayout;}
 	int layoutFirstPage() const { return m_layoutFirstPage; }
+	int bindingDirection() const { return m_bindingDirection; }
 	double pageWidth() const { return m_pageWidth;}
 	double pageHeight() const { return m_pageHeight;}
 	double distance() const { return m_distance;}
@@ -97,6 +98,7 @@ public slots:
 	void setPageSize(const QString &);
 	void setDocLayout(int layout);
 	void setDocFirstPage(int firstPage);
+	void setDocBindingDirection(int bindingDirection);
 	/*! Opens document on doubleclick
 	\author Petr Vanek <petr@yarpen.cz>
 	*/
@@ -126,6 +128,7 @@ protected:
 	double m_unitRatio { 1.0 };
 	int m_orientation { 0 };
 	int m_choosenLayout { 0 };
+	int m_bindingDirection { 0 };
 	int m_layoutFirstPage { 0 };
 	double m_pageWidth { 1.0 };
 	double m_pageHeight { 1.0 };
diff --git a/scribus/ui/newdocdialog.ui b/scribus/ui/newdocdialog.ui
index 53c60dcff..81b2bf2ca 100644
--- a/scribus/ui/newdocdialog.ui
+++ b/scribus/ui/newdocdialog.ui
@@ -474,6 +474,26 @@
                         </property>
                        </widget>
                       </item>
+                      <item>
+                       <widget class="QToolButton" name="buttonLTRBinding">
+                        <property name="text">
+                         <string/>
+                        </property>
+                        <property name="checkable">
+                         <bool>true</bool>
+                        </property>
+                       </widget>
+                      </item>
+                      <item>
+                       <widget class="QToolButton" name="buttonRTLBinding">
+                        <property name="text">
+                         <string/>
+                        </property>
+                        <property name="checkable">
+                         <bool>true</bool>
+                        </property>
+                       </widget>
+                      </item>
                      </layout>
                     </item>
                    </layout>
diff --git a/scribus/ui/pagepalette_pages.cpp b/scribus/ui/pagepalette_pages.cpp
index 4fad09a0d..560ac38f7 100644
--- a/scribus/ui/pagepalette_pages.cpp
+++ b/scribus/ui/pagepalette_pages.cpp
@@ -381,7 +381,7 @@ void PagePalette_Pages::rebuildPages()
 
 	int counter = currentPageSet.FirstPage;
 	int cols = currentPageSet.Columns;
-
+	pageViewWidget->pageGrid()->setBindingDirection(currView->m_doc->docBindingDirection());
 	pageViewWidget->pageGrid()->setDocumentPageSize(QSize(currView->m_doc->pageWidth(), currView->m_doc->pageHeight()));
 	pageViewWidget->pageGrid()->setPageInGroup(cols);
 	pageViewWidget->pageGrid()->setPageOffset(counter);
@@ -456,6 +456,7 @@ void PagePalette_Pages::setView(ScribusView *view)
 		return;
 
 	pageViewWidget->pageGrid()->setSelectionColor(PrefsManager::instance().appPrefs.displayPrefs.pageBorderColor);
+	pageViewWidget->pageGrid()->setBindingDirection(view->m_doc->docBindingDirection());
 
 //	if (currView)
 //		connect(currView->m_doc, SIGNAL(pagePreviewChanged()), this, SLOT(updatePagePreview()));
diff --git a/scribus/ui/pagepalette_widgets.cpp b/scribus/ui/pagepalette_widgets.cpp
index 3c9519901..7e3b2705d 100644
--- a/scribus/ui/pagepalette_widgets.cpp
+++ b/scribus/ui/pagepalette_widgets.cpp
@@ -23,6 +23,7 @@ for which a new license (GPL+exception) is in place.
 
 #include "iconmanager.h"
 #include "pagepalette_widgets.h"
+
 #include "prefsfile.h"
 #include "prefsmanager.h"
 #include "scribusapp.h"
@@ -319,6 +320,8 @@ void PageGrid::setPageLayout(PageLayout layout)
 void PageGrid::setPageOffset(int pageCount)
 {
 	m_pageOffset = pageCount;
+	if (m_rtlBinding)
+		m_pageOffset = !pageCount;
 	calculateSize();
 	update();
 }
@@ -444,7 +447,10 @@ int PageGrid::columnAt(QPoint pos)
 
 	int m_columns = columns();
 
-	return (m_col < m_columns) ? m_col : m_columns -1;
+	int correctedCol = (m_col < m_columns) ? m_col : m_columns -1;
+	if (m_rtlBinding)
+		return  !correctedCol;
+	return correctedCol;
 }
 
 int PageGrid::rowAt(QPoint pos)
@@ -789,6 +795,14 @@ void PageGrid::showContextMenu(QPoint pos)
 	m_contextMenu->exec( mapToGlobal(pos) );
 }
 
+void PageGrid::setBindingDirection(int rtl_binding)
+{
+	if (rtl_binding == 1)
+		m_rtlBinding = true;
+	else
+		m_rtlBinding = false;
+}
+
 /* ********************************************************************************* *
  *
  * Events
@@ -802,6 +816,9 @@ void PageGrid::paintEvent(QPaintEvent *event)
 	int x = m_groupSpace;
 	int y = m_rowSpace;
 	int offset = 0;
+	bool firstPage = false;
+	bool lastPage = false;
+	int groupStart = 0;
 	QRect selectedPageRect;
 	QColor foregroundColor( PrefsManager::instance().appPrefs.displayPrefs.scratchColor.lightness() <= 128 ? Qt::white : Qt::black);
 
@@ -818,22 +835,40 @@ void PageGrid::paintEvent(QPaintEvent *event)
 	// Draw pages
 	for (int r = 0; r < rows(); r++)
 	{
-		int groupStart = m_groupSpace;
+		if (!lastPage)
+			groupStart = m_groupSpace;
 		int groupWidth = 0;
 		bool drawGroupRect = false;
 
+
 		for (int c = 0; c < columns(); c++)
 		{
 
 			// cell is after last page cell
 			if (count >= pageCount() + m_pageOffset)
 				break;
-
+			// cell is last page cell
+			if (count == pageCount() + m_pageOffset -1 )
+			{
+				lastPage = true;
+			}
 			// cell is a page cell
 			if (count >= m_pageOffset && count < pageCount() + m_pageOffset)
 			{
 				int id = count - m_pageOffset;
 				PageCell * cell = getPageItem(id);
+				if (m_rtlBinding)
+				{
+					x = (rowWidth(r) - dummyPageSize().width() - 1 - m_cellGap - x);;
+					if (firstPage)
+					{
+						x = m_groupSpace;
+						firstPage = false;
+						lastPage = false;
+					}
+					if (lastPage)
+						groupStart = x;
+				}
 				if (id == m_selectedPage)
 					selectedPageRect = QRect(x, y, cell->pageWidthByHeight(pageHeight()), pageHeight() );
 				QPoint pos(x,y);
@@ -845,9 +880,8 @@ void PageGrid::paintEvent(QPaintEvent *event)
 					offset = 0;
 				else
 					offset = m_cellGap;
-
-
-				x += cell->pageWidthByHeight(pageHeight()) + offset;
+				if (!m_rtlBinding)
+					x += cell->pageWidthByHeight(pageHeight()) + offset;
 				groupWidth += cell->pageWidthByHeight(pageHeight()) + offset;
 				drawGroupRect = true;
 
@@ -857,8 +891,9 @@ void PageGrid::paintEvent(QPaintEvent *event)
 			else
 			{
 				offset = ((c + 1) % m_cellsInGroup) == 0 ? 0 : m_cellGap;
-				x += dummyPageSize().width() + offset;
-
+				if (!m_rtlBinding)
+					x += dummyPageSize().width() + offset;
+				firstPage = true;
 				// adjust start on first row if first page has an offset
 				if(r == 0)
 					groupStart = x;
diff --git a/scribus/ui/pagepalette_widgets.h b/scribus/ui/pagepalette_widgets.h
index 9c7186ec8..f2e565af8 100644
--- a/scribus/ui/pagepalette_widgets.h
+++ b/scribus/ui/pagepalette_widgets.h
@@ -75,8 +75,8 @@ protected:
 	QPoint m_mousePos;
 	bool m_mousePressed {false};
 	bool m_thumb {false};
-	QString m_prefsContext = "PagePalette";
-	QString m_prefsName = "showMasterThumbnails";
+	QString m_prefsContext = "PagePalette";
+	QString m_prefsName = "showMasterThumbnails";
 
 };
 
@@ -148,6 +148,7 @@ public:
 	int pageHeight();
 
 	void setSelectedPage(int pageID);
+	void setBindingDirection(int rtl_binding);
 	int selectedPage() { return m_selectedPage; };
 
 	void deleteSelectedPage();
@@ -190,6 +191,7 @@ private:
 	int m_cellsInGroup {1}; // 1 for single page
 	int m_pageOffset {0};
 	QMenu *m_contextMenu {nullptr};
+	bool m_rtlBinding = false;
 
 	int columns();
 	int rows();
diff --git a/scribus/ui/prefs_documentsetup.cpp b/scribus/ui/prefs_documentsetup.cpp
index f5fc66b9a..b2e31fc89 100644
--- a/scribus/ui/prefs_documentsetup.cpp
+++ b/scribus/ui/prefs_documentsetup.cpp
@@ -4,6 +4,7 @@ to the COPYING file provided with the program. Following this notice may exist
 a copyright and/or license notice that predates the release of Scribus 1.3.2
 for which a new license (GPL+exception) is in place.
 */
+#include <GL/gl.h>
 #include <algorithm>
 
 #include <QButtonGroup>
@@ -17,6 +18,7 @@ for which a new license (GPL+exception) is in place.
 #include "prefsfile.h"
 #include "prefsmanager.h"
 #include "prefsstructs.h"
+#include "scribusdoc.h"
 #include "undomanager.h"
 #include "units.h"
 #include "util.h"
@@ -64,6 +66,11 @@ Prefs_DocumentSetup::Prefs_DocumentSetup(QWidget* parent, ScribusDoc* doc)
 	layoutFirstPageIsComboBox->setCurrentIndex(0);
 	layoutFirstPageIsComboBox->setEnabled(false);
 
+    layoutBindingIsComboBox->clear();
+    layoutBindingIsComboBox->addItem(" ");
+    layoutBindingIsComboBox->setCurrentIndex(0);
+    layoutBindingIsComboBox->setEnabled(false);
+
 	pageWidthSpinBox->setMaximum(16777215);
 	pageHeightSpinBox->setMaximum(16777215);
 	languageChange();
@@ -175,6 +182,8 @@ void Prefs_DocumentSetup::restoreDefaults(struct ApplicationPrefs *prefsData)
 	setupPageSets();
 
 	layoutFirstPageIsComboBox->setCurrentIndex(prefsData->pageSets[prefsData->docSetupPrefs.pagePositioning].FirstPage);
+    layoutBindingIsComboBox->setCurrentIndex(prefsData->docSetupPrefs.docBindingDirection);
+
 
 	pageWidthSpinBox->blockSignals(false);
 	pageHeightSpinBox->blockSignals(false);
@@ -222,6 +231,8 @@ void Prefs_DocumentSetup::saveGuiToPrefs(struct ApplicationPrefs *prefsData) con
 	prefsData->docSetupPrefs.pageHeight = pageH;
 	prefsData->docSetupPrefs.pagePositioning = pageLayoutButtonGroup->checkedId();
 	prefsData->pageSets[prefsData->docSetupPrefs.pagePositioning].FirstPage = layoutFirstPageIsComboBox->currentIndex();
+    prefsData->docSetupPrefs.docBindingDirection = layoutBindingIsComboBox->currentIndex();
+
 
 	prefsData->docSetupPrefs.margins = marginsWidget->margins();
 	prefsData->docSetupPrefs.bleeds = bleedsWidget->margins();
@@ -246,26 +257,42 @@ void Prefs_DocumentSetup::saveGuiToPrefs(struct ApplicationPrefs *prefsData) con
 void Prefs_DocumentSetup::setupPageSets()
 {
 	int i = layoutFirstPageIsComboBox->currentIndex();
-	if (!layoutFirstPageIsComboBox->isEnabled())
+    if (!layoutFirstPageIsComboBox->isEnabled())
 		i = -1;
 	int currIndex = pageLayoutButtonGroup->checkedId() < 0 ? 0 :pageLayoutButtonGroup->checkedId();
 	layoutFirstPageIsComboBox->clear();
+    layoutBindingIsComboBox->clear();
 	if (currIndex > 0 && currIndex < pageSets.count())
 	{
 		const PageSet& pageSet = pageSets.at(currIndex);
 		const QStringList& pageNames = pageSet.pageNames;
 		layoutFirstPageIsComboBox->setEnabled(true);
+        layoutBindingIsComboBox->setEnabled(true);
 		for (const QString& pageName : pageNames)
+        {
 			layoutFirstPageIsComboBox->addItem(CommonStrings::translatePageSetLocString(pageName));
+        }
+        //ToDo find the right place to add item or
+		layoutBindingIsComboBox->addItem(CommonStrings::translateDocBindingLocString(CommonStrings::docLoc_LTR_Binding));
+		layoutBindingIsComboBox->addItem(CommonStrings::translateDocBindingLocString(CommonStrings::docLoc_RTL_Binding));
+
 		int firstPageIndex = i < 0 ? pageSet.FirstPage : i;
+        int bindingIndex = i < 0 ? m_doc->docBindingDirection() : i;
 		firstPageIndex = qMax(0, qMin(firstPageIndex, pageSet.pageNames.count() - 1));
+        bindingIndex = qMax(0, qMin(bindingIndex, pageSet.pageNames.count() - 1));
+
 		layoutFirstPageIsComboBox->setCurrentIndex(firstPageIndex);
+        layoutBindingIsComboBox->setCurrentIndex(bindingIndex);
 	}
 	else
 	{
 		layoutFirstPageIsComboBox->addItem(" ");
 		layoutFirstPageIsComboBox->setCurrentIndex(0);
 		layoutFirstPageIsComboBox->setEnabled(false);
+
+        layoutBindingIsComboBox->addItem(" ");
+        layoutBindingIsComboBox->setCurrentIndex(0);
+        layoutBindingIsComboBox->setEnabled(false);
 	}
 }
 
diff --git a/scribus/ui/prefs_documentsetupbase.ui b/scribus/ui/prefs_documentsetupbase.ui
index 008af5be5..91535a32b 100644
--- a/scribus/ui/prefs_documentsetupbase.ui
+++ b/scribus/ui/prefs_documentsetupbase.ui
@@ -39,14 +39,14 @@
    <item>
     <widget class="Line" name="line">
      <property name="orientation">
-      <enum>Qt::Orientation::Horizontal</enum>
+      <enum>Qt::Horizontal</enum>
      </property>
     </widget>
    </item>
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="sizeTab">
       <attribute name="title">
@@ -68,7 +68,7 @@
          <item>
           <spacer name="horizontalSpacer_3">
            <property name="orientation">
-            <enum>Qt::Orientation::Horizontal</enum>
+            <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
@@ -83,10 +83,10 @@
        <item>
         <spacer name="verticalSpacer">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeType">
-          <enum>QSizePolicy::Policy::Fixed</enum>
+          <enum>QSizePolicy::Fixed</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -111,7 +111,7 @@
        <item>
         <widget class="Line" name="line_2">
          <property name="orientation">
-          <enum>Qt::Orientation::Horizontal</enum>
+          <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -127,12 +127,12 @@
          <item row="0" column="1">
           <layout class="QHBoxLayout" name="pageSizeLayout">
            <item>
-            <widget class="PageSizeSelector" name="pageSizeSelector" native="true"/>
+            <widget class="PageSizeSelector" name="pageSizeSelector" native="true"/>
            </item>
            <item>
             <widget class="QToolButton" name="pageSizeLinkToolButton">
              <property name="arrowType">
-              <enum>Qt::ArrowType::NoArrow</enum>
+              <enum>Qt::NoArrow</enum>
              </property>
             </widget>
            </item>
@@ -209,7 +209,7 @@
        <item>
         <spacer name="verticalSpacer_5">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -241,7 +241,7 @@
        <item>
         <widget class="Line" name="line_3">
          <property name="orientation">
-          <enum>Qt::Orientation::Horizontal</enum>
+          <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -260,7 +260,7 @@
          <item row="4" column="1">
           <widget class="QComboBox" name="layoutFirstPageIsComboBox">
            <property name="sizeAdjustPolicy">
-            <enum>QComboBox::SizeAdjustPolicy::AdjustToContents</enum>
+            <enum>QComboBox::AdjustToContents</enum>
            </property>
           </widget>
          </item>
@@ -307,12 +307,22 @@
            </attribute>
           </widget>
          </item>
+         <item row="5" column="0">
+          <widget class="QLabel" name="layoutBindingIsLabel">
+           <property name="text">
+            <string>Binding Direction:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="5" column="1">
+          <widget class="QComboBox" name="layoutBindingIsComboBox"/>
+         </item>
         </layout>
        </item>
        <item>
         <spacer name="verticalSpacer_8">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -344,10 +354,10 @@
        <item>
         <widget class="QScrollArea" name="scrollArea">
          <property name="frameShape">
-          <enum>QFrame::Shape::NoFrame</enum>
+          <enum>QFrame::NoFrame</enum>
          </property>
          <property name="frameShadow">
-          <enum>QFrame::Shadow::Plain</enum>
+          <enum>QFrame::Plain</enum>
          </property>
          <property name="lineWidth">
           <number>0</number>
@@ -360,8 +370,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>494</width>
-            <height>575</height>
+            <width>492</width>
+            <height>578</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_5">
@@ -380,7 +390,7 @@
            <item>
             <widget class="Line" name="line_5">
              <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
+              <enum>Qt::Horizontal</enum>
              </property>
             </widget>
            </item>
@@ -404,7 +414,7 @@
              <item>
               <spacer name="horizontalSpacer_6">
                <property name="orientation">
-                <enum>Qt::Orientation::Horizontal</enum>
+                <enum>Qt::Horizontal</enum>
                </property>
                <property name="sizeHint" stdset="0">
                 <size>
@@ -433,10 +443,10 @@
            <item>
             <spacer name="verticalSpacer_3">
              <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
+              <enum>Qt::Vertical</enum>
              </property>
              <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
+              <enum>QSizePolicy::Fixed</enum>
              </property>
              <property name="sizeHint" stdset="0">
               <size>
@@ -461,7 +471,7 @@
            <item>
             <widget class="Line" name="line_4">
              <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
+              <enum>Qt::Horizontal</enum>
              </property>
             </widget>
            </item>
@@ -485,7 +495,7 @@
              <item>
               <spacer name="horizontalSpacer_7">
                <property name="orientation">
-                <enum>Qt::Orientation::Horizontal</enum>
+                <enum>Qt::Horizontal</enum>
                </property>
                <property name="sizeHint" stdset="0">
                 <size>
@@ -500,7 +510,7 @@
            <item>
             <spacer name="verticalSpacer_4">
              <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
+              <enum>Qt::Vertical</enum>
              </property>
              <property name="sizeHint" stdset="0">
               <size>
@@ -538,10 +548,10 @@
        <item>
         <spacer name="verticalSpacer_6">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeType">
-          <enum>QSizePolicy::Policy::Fixed</enum>
+          <enum>QSizePolicy::Fixed</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -566,7 +576,7 @@
        <item>
         <widget class="Line" name="line_6">
          <property name="orientation">
-          <enum>Qt::Orientation::Horizontal</enum>
+          <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -617,7 +627,7 @@
          <item>
           <spacer name="horizontalSpacer_2">
            <property name="orientation">
-            <enum>Qt::Orientation::Horizontal</enum>
+            <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
@@ -680,10 +690,10 @@
        <item>
         <spacer name="verticalSpacer_7">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeType">
-          <enum>QSizePolicy::Policy::Maximum</enum>
+          <enum>QSizePolicy::Maximum</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -708,7 +718,7 @@
        <item>
         <widget class="Line" name="line_7">
          <property name="orientation">
-          <enum>Qt::Orientation::Horizontal</enum>
+          <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -734,7 +744,7 @@
          <item>
           <spacer name="horizontalSpacer">
            <property name="orientation">
-            <enum>Qt::Orientation::Horizontal</enum>
+            <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
@@ -749,7 +759,7 @@
        <item>
         <spacer name="verticalSpacer_2">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -777,12 +787,12 @@
    <header location="global">ui/newmarginwidget.h</header>
    <container>1</container>
   </customwidget>
-  <customwidget>
-   <class>PageSizeSelector</class>
-   <extends>QWidget</extends>
-   <header>ui/widgets/pagesizeselector.h</header>
-   <container>1</container>
-  </customwidget>
+  <customwidget>
+   <class>PageSizeSelector</class>
+   <extends>QWidget</extends>
+   <header>ui/widgets/pagesizeselector.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>tabWidget</tabstop>
diff --git a/scribus/ui/widgets/pagelayout.cpp b/scribus/ui/widgets/pagelayout.cpp
index 24aafeab6..7d079531a 100644
--- a/scribus/ui/widgets/pagelayout.cpp
+++ b/scribus/ui/widgets/pagelayout.cpp
@@ -95,7 +95,6 @@ void PageLayouts::setScheme(int nr)
 	buttonScheme->setIcon(menuScheme->actions().at(m_scheme)->icon());
 
 	reloadFirstPage(m_scheme);
-
 }
 
 void PageLayouts::setHideLabelsPermanently(bool hide)
@@ -197,4 +196,4 @@ void PageLayouts::changeFirstPage(QAction *action)
 	buttonFirstPage->setIcon(action->icon());
 	m_firstPage = action->data().toInt();
 	emit firstPageChanged(m_firstPage);
-}
+}
\ No newline at end of file
diff --git a/scribus/ui/widgets/pagelayout.h b/scribus/ui/widgets/pagelayout.h
index d404ba4d8..bd1d8ef10 100644
--- a/scribus/ui/widgets/pagelayout.h
+++ b/scribus/ui/widgets/pagelayout.h
@@ -63,6 +63,7 @@ private:
 	QMenu* menuFirstPage { nullptr };
 	QHBoxLayout* layoutGroupLayout { nullptr };
 
+
 	void reloadScheme();
 	void reloadFirstPage(int scheme);
 
@@ -70,7 +71,6 @@ protected slots:
 	void languageChange();
 	void changeScheme(QAction* action);
 	void changeFirstPage(QAction* action);
-
 };
 
 #endif // PAGELAYOUT_H
