diff --git Scribus/scribus/pageitem_textframe.cpp Scribus/scribus/pageitem_textframe.cpp
index a784ad8..7e31bb5 100644
--- Scribus/scribus/pageitem_textframe.cpp
+++ Scribus/scribus/pageitem_textframe.cpp
@@ -1427,6 +1427,8 @@ void PageItem_TextFrame::layout()
 		{
 			hl = itemText.item(firstInFrame());
 			style = itemText.paragraphStyle(firstInFrame());
+			if (firstLineOffset() == FLOPBaseGrid)
+				style.setLineSpacingMode(ParagraphStyle::BaselineGridLineSpacing);
 			style.setLineSpacing (calculateLineSpacing (style, this));
 
 //			qDebug() << QString("style @0: %1 -- %2, %4/%5 char: %3").arg(style.leftMargin()).arg(style.rightMargin())
@@ -1485,6 +1487,8 @@ void PageItem_TextFrame::layout()
 
 			if (chstr.isEmpty())
 				chstr = SpecialChars::ZWNBSPACE;
+			if (current.startOfCol && firstLineOffset() == FLOPBaseGrid)
+				style.setLineSpacingMode(ParagraphStyle::BaselineGridLineSpacing);
 			style.setLineSpacing (calculateLineSpacing (style, this));
 			// find out about par gap and dropcap
 			if (a == firstInFrame())
diff --git Scribus/scribus/sctextstruct.h Scribus/scribus/sctextstruct.h
index bfede86..733f5b0 100644
--- Scribus/scribus/sctextstruct.h
+++ Scribus/scribus/sctextstruct.h
@@ -151,7 +151,8 @@ enum FirstLineOffsetPolicy
 {
     FLOPRealGlyphHeight = 0, // Historical
     FLOPFontAscent	= 1,
-    FLOPLineSpacing	= 2
+    FLOPLineSpacing	= 2,
+	FLOPBaseGrid = 3
 };
 
 
diff --git Scribus/scribus/ui/propertiespalette_text.cpp Scribus/scribus/ui/propertiespalette_text.cpp
index 9f768ae..2486854 100644
--- Scribus/scribus/ui/propertiespalette_text.cpp
+++ Scribus/scribus/ui/propertiespalette_text.cpp
@@ -444,8 +444,10 @@ void PropertiesPalette_Text::displayFirstLinePolicy( FirstLineOffsetPolicy f )
 		flopBox->flopFontAscent->setChecked(true);
 	else if(f == FLOPLineSpacing)
 		flopBox->flopLineSpacing->setChecked(true);
-	else
+	else if (f == FLOPRealGlyphHeight)
 		flopBox->flopRealHeight->setChecked(true); //It’s historical behaviour.
+	else // if (f == FLOPBaseGrid)
+		flopBox->flopBaseGrid->setChecked(true);
 }
 
 void PropertiesPalette_Text::setupLineSpacingSpinbox(int mode, double value)
@@ -725,6 +727,8 @@ void PropertiesPalette_Text::handleFirstLinePolicy(int radioFlop)
 			i2->setFirstLineOffset(FLOPFontAscent);
 		else if( radioFlop == PropertyWidget_Flop::LineSpacingID)
 			i2->setFirstLineOffset(FLOPLineSpacing);
+		else if( radioFlop == PropertyWidget_Flop::BaseGridID)
+			i2->setFirstLineOffset(FLOPBaseGrid);
 		i2->update();
 		if (m_doc->appMode == modeEditTable)
 			m_item->asTable()->update();
diff --git Scribus/scribus/ui/propertywidget_flop.cpp Scribus/scribus/ui/propertywidget_flop.cpp
index a6a715b..b7c958f 100644
--- Scribus/scribus/ui/propertywidget_flop.cpp
+++ Scribus/scribus/ui/propertywidget_flop.cpp
@@ -24,6 +24,7 @@ PropertyWidget_Flop::PropertyWidget_Flop(QWidget* parent) : QFrame(parent)
 	flopGroup->setId(flopRealHeight,  RealHeightID);
     flopGroup->setId(flopFontAscent,  FontAscentID);
     flopGroup->setId(flopLineSpacing, LineSpacingID);
+	flopGroup->setId(flopBaseGrid, BaseGridID);
 
 	languageChange();
 }
@@ -54,8 +55,10 @@ void PropertyWidget_Flop::languageChange()
 	flopRealHeight->setText( tr("Maximum Ascent") );
 	flopFontAscent->setText( tr("Font Ascent") );
 	flopLineSpacing->setText( tr("Line Spacing") );
+	flopBaseGrid->setText( tr("Baseline Grid") );
 	
 	flopRealHeight->setToolTip( "<qt>" + tr("Set the height of the first line of the text frame to use the tallest height of the included characters") + "</qt>" );
 	flopFontAscent->setToolTip( "<qt>" + tr("Set the height of the first line of text frame to use the full ascent of the font(s) in use") + "</qt>" );
 	flopLineSpacing->setToolTip( "<qt>" + tr("Set the height of the first line of the text frame to the specified line height") + "</qt>" );
+	flopBaseGrid->setToolTip( "<qt>" + tr("Set the base line of the first line of the text frame to the base line grid") + "</qt>" );
 }
\ No newline at end of file
diff --git Scribus/scribus/ui/propertywidget_flop.h Scribus/scribus/ui/propertywidget_flop.h
index 261e4bb..e1406f6 100644
--- Scribus/scribus/ui/propertywidget_flop.h
+++ Scribus/scribus/ui/propertywidget_flop.h
@@ -23,7 +23,8 @@ public:
     {
         RealHeightID  = 0,
         FontAscentID  = 1,
-        LineSpacingID = 2
+        LineSpacingID = 2,
+		BaseGridID    = 3
     };
 
 	PropertyWidget_Flop(QWidget* parent);
diff --git Scribus/scribus/ui/propertywidget_flopbase.ui Scribus/scribus/ui/propertywidget_flopbase.ui
index 5370174..875217b 100644
--- Scribus/scribus/ui/propertywidget_flopbase.ui
+++ Scribus/scribus/ui/propertywidget_flopbase.ui
@@ -41,7 +41,7 @@
     </widget>
    </item>
    <item>
-    <widget class="QRadioButton" name="flopLineSpacing">
+    <widget class="QRadioButton" name="flopLineSpacing">(firstLineOffset() != FLOPBaseGrid)
      <property name="text">
       <string>Line Spacing</string>
      </property>
@@ -50,6 +50,16 @@
      </attribute>
     </widget>
    </item>
+   <item>
+    <widget class="QRadioButton" name="flopBaseGrid">
+     <property name="text">
+      <string>Baseline Grid</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string>flopGroup</string>
+     </attribute>
+    </widget>
+   </item>
   </layout>
  </widget>
  <resources/>
