diff --git a/Scribus/scribus/scribusdoc.cpp b/Scribus/scribus/scribusdoc.cpp
index d2af346..e0469e4 100644
@@ -9029,6 +9029,13 @@ void ScribusDoc::itemSelection_SetTracking(int kern, Selection* customSelection)
 	itemSelection_ApplyCharStyle(newStyle, customSelection, "TRACKING");
 }
 
+void ScribusDoc::itemSelection_SetWordTracking(double track, Selection* customSelection)
+{
+	CharStyle newStyle;
+	newStyle.setWordTracking(track);
+	itemSelection_ApplyCharStyle(newStyle, customSelection, "WORDTRACKING");
+}
+
 void ScribusDoc::itemSelection_SetLineSpacingMode(int m, Selection* customSelection)
 {
 	ParagraphStyle newStyle;
diff --git a/Scribus/scribus/scribusdoc.h b/Scribus/scribus/scribusdoc.h
index 078a2f5..e1f1a02 100644
@@ -1080,6 +1080,7 @@ public:
 //	void chAbStyle(PageItem *currItem, int s);
 
 	void itemSelection_SetTracking(int us, Selection* customSelection=0);
+	void itemSelection_SetWordTracking(double us, Selection* customSelection=0);
 	void itemSelection_SetFontSize(int size, Selection* customSelection=0);
 	//void FlipImageH();
 	//void FlipImageV();
diff --git a/Scribus/scribus/text/storytext.cpp b/Scribus/scribus/text/storytext.cpp
index 418c4c3..a97e946 100644
@@ -818,14 +818,19 @@ const CharStyle & StoryText::charStyle(int pos) const
 		return defaultStyle().charStyle();
 	}
 	else if (pos == length()) {
-		qDebug() << "storytext::charstyle: access at end of text %i" << pos;
+//		qDebug() << "storytext::charstyle: access at end of text %i" << pos;
 		--pos;
 	}
-	//for notes frames - get style from note text, not from mark
-	if ((pos+1 < length()) && hasMark(pos) && mark(pos)->isNoteType())
-		++pos;
+//	//for notes frames - get style from note text, not from mark
+//	if ((pos+1 < length()) && hasMark(pos) && mark(pos)->isNoteType())
+//		++pos; FIXME - why in fact?
 	if (text(pos) == SpecialChars::PARSEP)
-		return paragraphStyle(pos).charStyle();
+	{
+		if ((pos == 0) || text(pos-1) == SpecialChars::PARSEP)
+			return paragraphStyle(pos).charStyle();
+		else //get charStyle from last char in paragraph
+			--pos;
+	}
 	StoryText* that = const_cast<StoryText *>(this);
 	return dynamic_cast<const CharStyle &> (*that->d->at(pos));
 }
diff --git a/Scribus/scribus/ui/propertywidget_advanced.cpp b/Scribus/scribus/ui/propertywidget_advanced.cpp
index f26932b..b6ef209 100644
@@ -203,6 +203,12 @@ void PropertyWidget_Advanced::displayTracking(double e)
 		return;
 	tracking->showValue(e / 10.0);
 }
+void PropertyWidget_Advanced::displayWordTracking(double e)
+{
+	if (!m_ScMW || m_ScMW->scriptIsRunning())
+		return;
+	normWordTrackingSpinBox->showValue(e * 100.0);
+}
 
 void PropertyWidget_Advanced::handleBaselineOffset()
 {
@@ -247,9 +253,7 @@ void PropertyWidget_Advanced::handleNormWordTracking()
 	{
 		Selection tempSelection(this, false);
 		tempSelection.addItem(i2, true);
-		ParagraphStyle newStyle;
-		newStyle.charStyle().setWordTracking(normWordTrackingSpinBox->value() / 100.0);
-		m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
+		m_doc->itemSelection_SetWordTracking(normWordTrackingSpinBox->value() / 100.0, &tempSelection);
 	}
 }
 
@@ -374,9 +378,9 @@ void PropertyWidget_Advanced::updateCharStyle(const CharStyle& charStyle)
 	displayTextScaleH(charStyle.scaleH());
 	displayTextScaleV(charStyle.scaleV());
 	displayTracking(charStyle.tracking());
+	displayWordTracking(charStyle.wordTracking());
 	displayBaseLineOffset(charStyle.baselineOffset());
 
-	normWordTrackingSpinBox->showValue(charStyle.wordTracking() * 100.0);
 	maxTrackingSpinBox->setMinimum(charStyle.tracking() / 10.0);
 	maxWordTrackingSpinBox->setMinimum(charStyle.wordTracking() * 100.0);
 }
@@ -391,10 +395,10 @@ void PropertyWidget_Advanced::updateStyle(const ParagraphStyle& newCurrent)
 	displayTextScaleH(charStyle.scaleH());
 	displayTextScaleV(charStyle.scaleV());
 	displayTracking(charStyle.tracking());
+	displayWordTracking(charStyle.wordTracking());
 	displayBaseLineOffset(charStyle.baselineOffset());
 
 	minWordTrackingSpinBox->showValue(newCurrent.minWordTracking() * 100.0);
-	normWordTrackingSpinBox->showValue(newCurrent.charStyle().wordTracking() * 100.0);
 	minGlyphExtSpinBox->showValue(newCurrent.minGlyphExtension() * 100.0);
 	maxGlyphExtSpinBox->showValue(newCurrent.maxGlyphExtension() * 100.0);
 	if (newCurrent.maxTracking() < charStyle.tracking())
diff --git a/Scribus/scribus/ui/propertywidget_advanced.h b/Scribus/scribus/ui/propertywidget_advanced.h
index 88e7b93..7c17d37 100644
@@ -52,6 +52,7 @@ public slots:
 	void displayTextScaleH(double e);
 	void displayTextScaleV(double e);
 	void displayTracking(double e);
+	void displayWordTracking(double e);
 
 	void updateCharStyle(const CharStyle& charStyle);
 	void updateStyle(const ParagraphStyle& newCurrent);
