Index: scribus/pageitem_textframe.cpp
===================================================================
--- scribus/pageitem_textframe.cpp	(revision 20493)
+++ scribus/pageitem_textframe.cpp	(working copy)
@@ -1654,6 +1654,7 @@
 			double scaleH = charStyle.scaleH() / 1000.0;
 			double offset = hlcsize10 * (charStyle.baselineOffset() / 1000.0);
 			style.setLineSpacing (calculateLineSpacing (style, this));
+			setLSpace(calculateLineSpacing (style, this));
 			FlopBaseline = (current.startOfCol && firstLineOffset() == FLOPBaselineGrid);
 
 			// find out about par gap and dropcap
@@ -2995,6 +2996,8 @@
 			{
 				regionMinY = static_cast<int>(qMax(0.0, floor(current.yPos - (asce + offset))));
 				regionMaxY = static_cast<int>(floor(current.yPos + desc));
+				setMiniY( regionMinY);
+				setMaxiY( regionMaxY);
 			}
 
 			EndX = current.endOfLine(m_availableRegion, style.rightMargin(), regionMinY, regionMaxY);
@@ -6085,7 +6088,9 @@
 {
 	//ugly hack increasing min frame`s haeight against strange glyph painting if it is too close of bottom
 	double hackValue = 0.5;
-
+	int miniY = getminiY();
+	int maxiY = getmaxiY();
+	maxY  =  (maxiY-miniY)*(textLayout.lines())+getLSpace()*(textLayout.lines() -textLayout.lines()/2 )/2;
 	setHeight(ceil(maxY) + m_textDistanceMargins.bottom() + hackValue);
 	updateClip();
 	invalid = true;
@@ -6092,3 +6097,29 @@
 	m_Doc->changed();
 	m_Doc->regionsChanged()->update(QRect());
 }
+int PageItem_TextFrame::getminiY()
+{
+	return miniY;
+}
+int PageItem_TextFrame::getmaxiY()
+{
+	return maxiY;
+}
+
+void PageItem_TextFrame::setMiniY(int value)
+{
+	miniY = ceil(value);
+}
+void PageItem_TextFrame::setMaxiY(int value)
+{
+	maxiY = ceil(value);
+}
+int PageItem_TextFrame::getLSpace()
+{
+	return lSpace;
+}
+
+void PageItem_TextFrame::setLSpace(int value)
+{
+	lSpace = value;
+}
Index: scribus/pageitem_textframe.h
===================================================================
--- scribus/pageitem_textframe.h	(revision 20493)
+++ scribus/pageitem_textframe.h	(working copy)
@@ -146,6 +146,9 @@
 	void invalidateNotesFrames();
 
 private:
+	int miniY;
+	int maxiY;
+	int lSpace;
 	NotesInFrameMap m_notesFramesMap;
 	NotesInFrameMap updateNotesFrames(QMap<int, Mark*> noteMarksPosMap); //update notes frames content
 	void updateNotesMarks(NotesInFrameMap notesMap);
@@ -159,6 +162,12 @@
 
 public:
 	void setTextFrameHeight();
+	int getminiY();
+	int getmaxiY();
+	int getLSpace();
+	void setLSpace(int value);
+	void setMiniY(int value);
+	void setMaxiY(int value);
 };
 
 #endif
