             selectionVisibility == TextSelectionVisibility.ALWAYS ?
             1.0 : 0.0;
             
-        // The cursor is black.            
+        // The cursor is black, inverted, which makes it the inverse color
+        // of the background, for maximum readability.         
         interactionManager.focusSelectionFormat = new SelectionFormat(
             selectionColor, 1.0, BlendMode.NORMAL, 
-            0x000000, 1.0, BlendMode.NORMAL);
+            0x000000, 1.0, BlendMode.INVERT);
         
         interactionManager.noFocusSelectionFormat = new SelectionFormat(
             unfocusedSelectionColor, unfocusedAlpha, BlendMode.NORMAL,

            
        // When losing focus, hide the selection.  Uses the SelectionFormat 
        // values defined by the SelectionManager. 
        if (textFlow.interactionManager.hasSelection())
            textFlow.flowComposer.hideSelection();            
    }

    //--------------------------------------------------------------------------


        var oldContentWidth:Number = _contentWidth;
        var newContentWidth:Number = containerController.contentWidth;
        
        // Error correction for rounding errors.  It shouldn't be so but
        // the contentWidth can be slightly larger than the requested
        // compositionWidth.
        if (newContentWidth > containerController.compositionWidth &&
            Math.round(newContentWidth) == containerController.compositionWidth)
        { 
            newContentWidth = containerController.compositionWidth;
        }
            
        if (newContentWidth != oldContentWidth)
        {
            _contentWidth = newContentWidth;
