Index: Scribus/scribus/gtaction.cpp
===================================================================
--- Scribus/scribus/gtaction.cpp	(wersja 17188)
+++ Scribus/scribus/gtaction.cpp	(kopia robocza)
@@ -606,7 +606,7 @@
 
 double gtAction::getLineSpacing(int fontSize)
 {
-	return ((fontSize / 10.0) * static_cast<double>(textFrame->doc()->typographicSettings.autoLineSpacing) / 100) + (fontSize / 10.0);
+	return ((fontSize / 10.0) * (1 + static_cast<double>(textFrame->doc()->typographicSettings.autoLineSpacing) / 100.0));
 }
 
 double gtAction::getFrameWidth()
Index: Scribus/scribus/scpageoutput.cpp
===================================================================
--- Scribus/scribus/scpageoutput.cpp	(wersja 17188)
+++ Scribus/scribus/scpageoutput.cpp	(kopia robocza)
@@ -1362,6 +1362,10 @@
 			painter->scale(1, -1);
 		}
 		uint tabCc = 0;
+
+		//automatic line spacing factor (calculated once)
+		double autoLS = 1 + static_cast<double>(m_doc->typographicSettings.autoLineSpacing) / 100.0;
+
 		for (uint ll=0; ll < item->itemText.lines(); ++ll)
 		{
 			LineSpec ls = item->itemText.line(ll);
@@ -1395,8 +1399,8 @@
 						if (style.lineSpacingMode() == ParagraphStyle::FixedLineSpacing)
 							chs = qRound(10 * ((style.lineSpacing() * (style.dropCapLines()-1)+(charStyle.font().ascent(style.charStyle().fontSize() / 10.0))) / charStyle.font().realCharHeight(chstr[0], 10)));
 						else
-						{
-							double currasce = charStyle.font().height(style.charStyle().fontSize() / 10.0);
+						{ //ParagraphStyle::AutomaticLineSpacing
+							double currasce = charStyle.font().height(style.charStyle().fontSize() * autoLS / 10.0);
 							chs = qRound(10 * ((currasce * (style.dropCapLines()-1)+(charStyle.font().ascent(style.charStyle().fontSize() / 10.0))) / charStyle.font().realCharHeight(chstr[0], 10)));
 						}
 					}
Index: Scribus/scribus/pageitem_textframe.cpp
===================================================================
--- Scribus/scribus/pageitem_textframe.cpp	(wersja 17188)
+++ Scribus/scribus/pageitem_textframe.cpp	(kopia robocza)
@@ -1087,6 +1087,9 @@
 		current.nextColumn();
 		lastLineY = extra.Top;
 
+		//automatic line spacing factor (calculated once)
+		double autoLS = 1 + static_cast<double>(m_Doc->typographicSettings.autoLineSpacing) / 100.0;
+
 		// find start of first line
 		if (firstInFrame() < itemText.length())
 		{
@@ -1094,7 +1097,7 @@
 			style = itemText.paragraphStyle(firstInFrame());
 			if (style.lineSpacingMode() == ParagraphStyle::AutomaticLineSpacing)
 			{
-				style.setLineSpacing(style.charStyle().font().height(style.charStyle().fontSize() / 10.0));
+				style.setLineSpacing(style.charStyle().font().height(style.charStyle().fontSize() * autoLS / 10.0));
 //				qDebug() << QString("auto linespacing: %1").arg(style.lineSpacing());
 			}
 			else if (style.lineSpacingMode() == ParagraphStyle::BaselineGridLineSpacing)
@@ -1156,9 +1159,10 @@
 			if (chstr.isEmpty())
 				chstr = SpecialChars::ZWNBSPACE;
 			if (style.lineSpacingMode() == ParagraphStyle::AutomaticLineSpacing)
-				style.setLineSpacing(charStyle.font().height(hlcsize10));
+				style.setLineSpacing((charStyle.fontSize() /10) * autoLS);
 			else if (style.lineSpacingMode() == ParagraphStyle::BaselineGridLineSpacing)
 				style.setLineSpacing(m_Doc->typographicSettings.valueBaseGrid);
+			double LS = style.lineSpacing();
 			// find out about par gap and dropcap
 			if (a == firstInFrame())
 			{
@@ -2057,8 +2061,9 @@
 					{
 						// go back to last break position
 						style = itemText.paragraphStyle(a);
+						double size = style.charStyle().fontSize() / 10;
 						if (style.lineSpacingMode() == ParagraphStyle::AutomaticLineSpacing)
-							style.setLineSpacing(charStyle.font().height(hlcsize10));
+							style.setLineSpacing(size * autoLS);
 						else if (style.lineSpacingMode() == ParagraphStyle::BaselineGridLineSpacing)
 							style.setLineSpacing(m_Doc->typographicSettings.valueBaseGrid);
 						
Index: Scribus/scribus/scribusdoc.cpp
===================================================================
--- Scribus/scribus/scribusdoc.cpp	(wersja 17188)
+++ Scribus/scribus/scribusdoc.cpp	(kopia robocza)
@@ -6096,11 +6096,11 @@
 	{
 		ParagraphStyle storyStyle;
 		storyStyle.charStyle().setFontSize(size);
-		if (storyStyle.lineSpacingMode() == 0)
+		if (storyStyle.lineSpacingMode() == ParagraphStyle::AutomaticLineSpacing)
 		{
-			storyStyle.setLineSpacing(((size / 10.0) * static_cast<double>(typographicSettings.autoLineSpacing) / 100) + (size / 10.0));
+			storyStyle.setLineSpacing((size / 10.0) * (1 + static_cast<double>(typographicSettings.autoLineSpacing) / 100.0));
 		}
-		else if (storyStyle.lineSpacingMode() == 1)
+		else if (storyStyle.lineSpacingMode() == ParagraphStyle::FixedLineSpacing)
 		{
 			storyStyle.setLineSpacing(storyStyle.charStyle().font().height(size));
 		}
Index: Scribus/scribus/sampleitem.cpp
===================================================================
--- Scribus/scribus/sampleitem.cpp	(wersja 17188)
+++ Scribus/scribus/sampleitem.cpp	(kopia robocza)
@@ -57,9 +57,7 @@
 	bgShade = 100;
 	tmpStyle.setName("(preview temporary)");
 	tmpStyle.setLineSpacingMode(ParagraphStyle::FixedLineSpacing);
-	tmpStyle.setLineSpacing((m_Doc->toolSettings.defSize / 10.0)
-		* static_cast<double>(m_Doc->typographicSettings.autoLineSpacing) / 100
-		+ (m_Doc->toolSettings.defSize / 10.0));
+	tmpStyle.setLineSpacing((m_Doc->toolSettings.defSize / 10.0) * (1 + static_cast<double>(m_Doc->typographicSettings.autoLineSpacing) / 100.0));
 	tmpStyle.setAlignment(ParagraphStyle::Leftaligned);
 	tmpStyle.setLeftMargin(0);
 	tmpStyle.setFirstIndent(0);
@@ -196,7 +194,7 @@
 {
 	tmpStyle.charStyle().setFontSize(fontSize);
 	if (autoLineSpa)
-		tmpStyle.setLineSpacing(((fontSize / 10)  * (m_Doc->typographicSettings.autoLineSpacing / 100) + (fontSize / 10)));
+		tmpStyle.setLineSpacing((fontSize / 10)  * (1 + static_cast<double>(m_Doc->typographicSettings.autoLineSpacing) / 100.0));
 }
 
 /*void SampleItem::setTabValues(QValueList<PageItem::TabRecord> tabValues)
Index: Scribus/scribus/tabtypography.cpp
===================================================================
--- Scribus/scribus/tabtypography.cpp	(wersja 17188)
+++ Scribus/scribus/tabtypography.cpp	(kopia robocza)
@@ -137,8 +137,11 @@
 	groupBox4aLayout->setSpacing(5);
 	groupBox4aLayout->setAlignment( Qt::AlignTop );
 	autoLine = new QSpinBox( groupBox4a );
-	autoLine->setMaximum( 100 );
-	autoLine->setMinimum( 1 );
+	// autoLine->setMaximum( 100 );
+	// autoLine->setMinimum( 1 );
+	// FIX ME: why not these values?
+	autoLine->setMaximum( 999 );
+	autoLine->setMinimum( 0 );
 	autoLine->setSuffix( tr( " %" ) );
 	groupBox4aLayout->addWidget( autoLine, 1, 1, Qt::AlignLeft );
 	textLabel8a = new QLabel( tr( "Line Spacing:" ), groupBox4a );
 
