diff --git a/include/LoginPage.h b/include/LoginPage.h
index 760e10551e439500e9340537c0dac20e8cda5dab..a431a41ec5ff41eb5b38618ec569e05026d0dc8a 100644
--- a/include/LoginPage.h
+++ b/include/LoginPage.h
@@ -73,7 +73,7 @@ private:
 	QHBoxLayout *form_wrapper_;
 	QVBoxLayout *form_layout_;
 
-	TextField *username_input_;
+	TextField *matrixid_input_;
 	TextField *password_input_;
 
 	InputValidator *matrix_id_validator_;
diff --git a/src/InputValidator.cc b/src/InputValidator.cc
index 3713c50183529a18216226d18f928688369aee21..7906b570b29f0eb36a89e0eb8b762dafd0618742 100644
--- a/src/InputValidator.cc
+++ b/src/InputValidator.cc
@@ -17,9 +17,8 @@
 
 #include "InputValidator.h"
 
-// FIXME: Maybe change the regex to match the real Matrix ID format and not email.
 InputValidator::InputValidator(QObject *parent)
-    : matrix_id_("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}")
+    : matrix_id_("@[A-Za-z0-9._%+-]+:[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}")
     , matrix_localpart_("[A-za-z0-9._%+-]{3,}")
     , matrix_password_(".{8,}")
     , server_domain_("(?!\\-)(?:[a-zA-Z\\d\\-]{0,62}[a-zA-Z\\d]\\.){1,126}(?!\\d+)[a-zA-Z\\d]{1,63}")
diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index 12b7aba8a7bf947e142de2015344f6d403997097..97497b7b8fd3360ed2dcc4ec0eaa299dff66d05a 100644
--- a/src/LoginPage.cc
+++ b/src/LoginPage.cc
@@ -62,10 +62,11 @@ LoginPage::LoginPage(QWidget *parent)
 	form_wrapper_->addWidget(form_widget_);
 	form_wrapper_->addStretch(1);
 
-	username_input_ = new TextField();
-	username_input_->setLabel("Username");
-	username_input_->setInkColor("#577275");
-	username_input_->setBackgroundColor("#f9f9f9");
+	matrixid_input_ = new TextField();
+	matrixid_input_->setLabel("Matrix ID");
+	matrixid_input_->setInkColor("#577275");
+	matrixid_input_->setBackgroundColor("#f9f9f9");
+	matrixid_input_->setPlaceholderText("e.g @joe:matrix.org");
 
 	password_input_ = new TextField();
 	password_input_->setLabel("Password");
@@ -73,7 +74,7 @@ LoginPage::LoginPage(QWidget *parent)
 	password_input_->setBackgroundColor("#f9f9f9");
 	password_input_->setEchoMode(QLineEdit::Password);
 
-	form_layout_->addWidget(username_input_, Qt::AlignHCenter, 0);
+	form_layout_->addWidget(matrixid_input_, Qt::AlignHCenter, 0);
 	form_layout_->addWidget(password_input_, Qt::AlignHCenter, 0);
 
 	button_layout_ = new QHBoxLayout();
@@ -106,10 +107,10 @@ LoginPage::LoginPage(QWidget *parent)
 
 	connect(back_button_, SIGNAL(clicked()), this, SLOT(onBackButtonClicked()));
 	connect(login_button_, SIGNAL(clicked()), this, SLOT(onLoginButtonClicked()));
-	connect(username_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
+	connect(matrixid_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
 	connect(password_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
 
-	username_input_->setValidator(matrix_id_validator_->id_);
+	matrixid_input_->setValidator(matrix_id_validator_->id_);
 
 	setLayout(top_layout_);
 }
@@ -124,13 +125,13 @@ void LoginPage::onLoginButtonClicked()
 {
 	error_label_->setText("");
 
-	if (!username_input_->hasAcceptableInput()) {
+	if (!matrixid_input_->hasAcceptableInput()) {
 		loginError("Invalid Matrix ID");
 	} else if (password_input_->text().isEmpty()) {
 		loginError("Empty password");
 	} else {
-		QString user = username_input_->text().split("@").at(0);
-		QString home_server = username_input_->text().split("@").at(1);
+		QString user = matrixid_input_->text().split(":").at(0).split("@").at(1);
+		QString home_server = matrixid_input_->text().split(":").at(1);
 		QString password = password_input_->text();
 
 		emit userLogin(user, password, home_server);
@@ -139,7 +140,7 @@ void LoginPage::onLoginButtonClicked()
 
 void LoginPage::reset()
 {
-	username_input_->clear();
+	matrixid_input_->clear();
 	password_input_->clear();
 }