diff --git src/orca/braille.py src/orca/braille.py
index 4b161c7..ea540a2 100644
--- src/orca/braille.py
+++ src/orca/braille.py
@@ -444,6 +444,23 @@ class Component(Region):
         else:
             action.doAction(0)
 
+class Link(Component):
+    """A subclass of Component backed by an accessible.  This Region will be marked as a link by dots 7 or 8, depending on the user's preferences.
+    """
+    def __init__(self, accessible, string, cursorOffset=0):
+        """Initialize a Link region. similar to Component, but here we always
+        have the region expand on cursor."""
+        Component.__init__(self, accessible, string, cursorOffset, '', True)
+
+    def getAttributeMask(self):
+        """Creates a string which can be used as the attrOr field of brltty's
+        write structure for the purpose of indicating text attributes and
+        selection."""
+
+        # Create an link indicator mask.
+        #
+        return chr(settings.brailleLinkIndicator) * len(self.string)
+
 class Text(Region):
     """A subclass of Region backed by a Text object.  This Region will
     react to any cursor routing key events by positioning the caret in
@@ -629,7 +646,7 @@ class Text(Region):
                     contractedMask[outPos[i]] |= m
                 except IndexError:
                     continue
-            regionMask = contractedMask
+            regionMask = contractedMask[:len(self.string)]
 
         # Add empty mask characters for the EOL character as well as for
         # any label that might be present.
diff --git src/orca/scripts/toolkits/Gecko/script.py src/orca/scripts/toolkits/Gecko/script.py
index 2d172a7..ca625b5 100644
--- src/orca/scripts/toolkits/Gecko/script.py
+++ src/orca/scripts/toolkits/Gecko/script.py
@@ -2937,12 +2937,11 @@ class Script(default.Script):
                                             endOffset=endOffset)]
 
                 if link:
-                    regions = [braille.Component(
+                    regions = [braille.Link(
                             link,
                             string + " " + \
                                 rolenames.getBrailleForRoleName(link),
-                            focusedCharacterOffset - startOffset,
-                            expandOnCursor=True)]
+                            focusedCharacterOffset - startOffset)]
                 elif obj.getRole() == pyatspi.ROLE_CAPTION:
                     regions.append(braille.Region(
                         " " + rolenames.getBrailleForRoleName(obj)))
