diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 4f1f1f5..0bf0a9f 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1632,6 +1632,15 @@ function theme_link($variables) {
 }
 
 /**
+ * Preprocess variables for link templates.
+ */
+function template_preprocess_link(&$variables) {
+  $variables['url'] = check_plain(url($variables['path'], $variables['options']));
+  $variables['attributes'] = new Attribute($variables['options']['attributes'] ?: array());
+  $variables['text'] = isset($variables['options']['html']) ? $variables['text'] : check_plain($variables['text']);
+}
+
+/**
  * Returns HTML for a set of links.
  *
  * @param $variables
diff --git a/core/themes/stark/templates/theme.inc/link.html.twig b/core/themes/stark/templates/theme.inc/link.html.twig
index d60dee6..ea20a00 100644
--- a/core/themes/stark/templates/theme.inc/link.html.twig
+++ b/core/themes/stark/templates/theme.inc/link.html.twig
@@ -5,33 +5,13 @@
  *
  * Available variables:
  * - text: The translated link text for the anchor tag.
- * - path: The internal path or external URL being linked to, such as
- *   "node/34" or "http://example.com/foo".
- * - attributes: Remaining html attributes for the containing element.
- * - options: Additional options, with the following elements:
- *   - options.attributes: An associative array of html attributes to apply
- *     to the anchor tag. If element 'class' is included, it must be an
- *     array; 'title' must be a string; other elements are more flexible,
- *     as they just need to work in a call to
- *     drupal_attributes($options['attributes']).
- *   - options.html (default FALSE): Whether $text is html or just plain-text.
- *     For example, to make an image tag into a link, this must be set to
- *     TRUE, or you will see the escaped html image tag. text is not
- *     sanitized if 'html' is TRUE. The calling function must ensure that
- *     text is already safe.
- *   - options.language: An optional language object. If the path being
- *     linked to is internal to the site, $options['language'] is used to
- *     determine whether the link is "active", or pointing to the current
- *     page (the language as well as the path must match). This element is
- *     also used by url().
- *   - Additional options elements used by the url() function.
+ * - url: The internal path or external URL being linked to.
+ * - attributes: Any link attributes such as class, id and title.
  *
  * @see template_preprocess
  * @see template_preprocess_link
  *
  * @ingroup themeable
  */
- @todo: revisit this template after http://drupal.org/node/1595614 is resolved.
- @todo: remove URL from this file once http://drupal.org/node/1778610 is resolved
 #}
-<a href="{{ url(path, options) }}" class="{{ attributes.class }}" {{- attributes }}>{{ text }}</a>
+<a href="{{ url }}" class="{{ attributes.class }}" {{- attributes }}>{{ text }}</a>
