diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/PlayerTextUtils.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/PlayerTextUtils.java
index b9ee177..d179406 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/PlayerTextUtils.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/PlayerTextUtils.java
@@ -371,6 +371,7 @@
 			result.add(rangeEntry);
 			totalDelta += delta;
 		}
+		squashRanges(result);
 		return result;
 	}
 
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTModelMapper.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTModelMapper.java
index 7662c44..2b55ad8 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTModelMapper.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTModelMapper.java
@@ -397,12 +397,14 @@
 			StyleRange[] sr = st.getStyleRanges();
 			for (StyleRange styleRange : sr) {
 				text.getStyleRanges().add(makeStyleRange(styleRange));
-				String currText = PlayerTextUtils.unifyMultilines(st.getTextRange(styleRange.start,
-						styleRange.length));
-				text.getStyles().add(
-						addStartEnd(st, makeTextStyle(styleRange, currText)));
 			}
 
+			List<StyleRangeEntry> styleRanges = PlayerTextUtils.captureStyleRanges(st);
+			for (StyleRangeEntry styleRange: styleRanges) {
+				String currText = PlayerTextUtils.unifyMultilines(st.getTextRange(styleRange.getStart(), styleRange.getLength()));
+				styleRange.setText(currText);
+				text.getStyles().add(styleRange);
+			}
 			setStyleAtOffset(text, st, caretOffset, sr);
 		}
 
diff --git a/runtime/verifications/org.eclipse.rcptt.verifications.text.impl/src/org/eclipse/rcptt/verifications/text/impl/TextVerificationProcessor.java b/runtime/verifications/org.eclipse.rcptt.verifications.text.impl/src/org/eclipse/rcptt/verifications/text/impl/TextVerificationProcessor.java
index 16ae0f7..469540f 100644
--- a/runtime/verifications/org.eclipse.rcptt.verifications.text.impl/src/org/eclipse/rcptt/verifications/text/impl/TextVerificationProcessor.java
+++ b/runtime/verifications/org.eclipse.rcptt.verifications.text.impl/src/org/eclipse/rcptt/verifications/text/impl/TextVerificationProcessor.java
@@ -65,7 +65,6 @@
 				}
 
 				List<StyleRangeEntry> expectedStyleEntries = textVerification.getStyles();
-				PlayerTextUtils.squashRanges(expectedStyleEntries);
 				
 				if (expectedStyleEntries.size() > 0 && !textVerification.isIgnoreStyling()) {
 					if (!(widget instanceof StyledText))
@@ -74,7 +73,6 @@
 					else {
 						StyledText styledText = (StyledText) widget;
 						List<StyleRangeEntry> actualStyleEntries = PlayerTextUtils.captureStyleRanges(styledText);
-						PlayerTextUtils.squashRanges(actualStyleEntries);
 
 						boolean failed = false;
 						for (int i = 0; i < Math.min(expectedStyleEntries.size(), actualStyleEntries.size()); ++i) {
@@ -131,7 +129,6 @@
 					if (unfold(styledText))
 						result.setText(PlayerTextUtils.getTextForVerification(swtuiElement));
 					List<StyleRangeEntry> captured = PlayerTextUtils.captureStyleRanges(styledText);
-					PlayerTextUtils.squashRanges(captured);
 					result.getStyles().addAll(captured);
 					result.setIgnoreStyling(result.getStyles().size() > 0 ? p.isIgnoreStyling() : true);
 				} else
