diff --git a/simplesamlphp_auth.module b/simplesamlphp_auth.module
index 1f4783c..0e1e760 100644
--- a/simplesamlphp_auth.module
+++ b/simplesamlphp_auth.module
@@ -184,6 +184,12 @@ function simplesamlphp_auth_form_user_login_form_alter(&$form, FormStateInterfac
       'class' => ['simplesamlphp-auth-login-link'],
     ],
   ];
+
+  if (Drupal::request()->query->has('destination')) {
+    $destination = \Drupal::destination()->getAsArray();
+    $form['simplesamlphp_auth_login_link']['#options']['query'] = $destination;
+  }
+
 }
 
 /**
diff --git a/src/Controller/SimplesamlphpAuthController.php b/src/Controller/SimplesamlphpAuthController.php
index 8a084f2..d0e04b6 100644
--- a/src/Controller/SimplesamlphpAuthController.php
+++ b/src/Controller/SimplesamlphpAuthController.php
@@ -150,6 +150,7 @@ class SimplesamlphpAuthController extends ControllerBase implements ContainerInj
     if (($return_to = $request->query->get('ReturnTo')) ||
         ($return_to = $request->request->get('ReturnTo')) ||
         ($return_to = $request->server->get('HTTP_REFERER'))) {
+      $return_to = \Drupal::request()->getSchemeAndHttpHost() . $return_to;
       if ($this->pathValidator->isValid($return_to) && UrlHelper::externalIsLocal($return_to, $base_url)) {
         $redirect = $return_to;
       }
