diff --git a/build.gradle b/build.gradle
index 5593a56f6e..12c5181ea4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -42,7 +42,7 @@ allprojects {
                 // PhotoView
                 includeGroupByRegex 'com\\.github\\.chrisbanes'
                 // PFLockScreen-Android
-                includeGroupByRegex 'com\\.github\\.thealeksandr'
+                includeGroupByRegex 'com\\.github\\.ganfra'
             }
         }
         maven {
diff --git a/vector/build.gradle b/vector/build.gradle
index 0d654438f5..f60f74629f 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -346,7 +346,7 @@ dependencies {
     implementation 'me.saket:better-link-movement-method:2.2.0'
     implementation 'com.google.android:flexbox:1.1.1'
     implementation "androidx.autofill:autofill:$autofill_version"
-    implementation 'com.github.thealeksandr:PFLockScreen-Android:1.0.0-beta7'
+    implementation 'com.github.ganfra:PFLockScreen-Android:1.0.0-beta8'
 
     // Custom Tab
     implementation 'androidx.browser:browser:1.2.0'
diff --git a/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt b/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
index 1fc1270192..fc0d3b1bcb 100644
--- a/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
+++ b/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
@@ -18,16 +18,16 @@ package im.vector.riotx.features.pin
 
 import android.content.Context
 import android.content.Intent
+import android.widget.Toast
+import androidx.appcompat.app.AlertDialog
 import androidx.appcompat.widget.Toolbar
 import com.beautycoder.pflockscreen.PFFLockScreenConfiguration
 import com.beautycoder.pflockscreen.fragments.PFLockScreenFragment
 import com.beautycoder.pflockscreen.fragments.PFLockScreenFragment.OnPFLockScreenCodeCreateListener
 import im.vector.riotx.R
-import im.vector.riotx.core.extensions.addFragment
 import im.vector.riotx.core.extensions.replaceFragment
 import im.vector.riotx.core.platform.ToolbarConfigurable
 import im.vector.riotx.core.platform.VectorBaseActivity
-import timber.log.Timber
 
 class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
 
@@ -41,9 +41,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
     override fun getLayoutRes() = R.layout.activity_simple
 
     override fun initUiAndData() {
-        if (isFirstCreation()) {
-            showCreateFragment()
-        }
+        showCreateFragment()
     }
 
     override fun configure(toolbar: Toolbar) {
@@ -57,6 +55,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
                 .setTitle("Choose a PIN for security")
                 .setNewCodeValidationTitle("Confirm PIN")
                 .setMode(PFFLockScreenConfiguration.MODE_CREATE)
+
         createFragment.setConfiguration(builder.build())
         createFragment.setCodeCreateListener(object : OnPFLockScreenCodeCreateListener {
             override fun onNewCodeValidationFailed() {
@@ -66,7 +65,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
                 showAuthFragment(encodedCode)
             }
         })
-        addFragment(R.id.simpleFragmentContainer, createFragment)
+        replaceFragment(R.id.simpleFragmentContainer, createFragment)
     }
 
     private fun showAuthFragment(encodedCode: String) {
@@ -75,25 +74,41 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
                 .setUseFingerprint(true)
                 .setTitle("Enter your PIN")
                 .setLeftButton("Forgot PIN?")
+                .setClearCodeOnError(true)
                 .setMode(PFFLockScreenConfiguration.MODE_AUTH)
         authFragment.setConfiguration(builder.build())
         authFragment.setEncodedPinCode(encodedCode)
         authFragment.setOnLeftButtonClickListener {
-
+            displayForgotPinWarningDialog()
         }
         authFragment.setLoginListener(object : PFLockScreenFragment.OnPFLockScreenLoginListener {
             override fun onPinLoginFailed() {
             }
 
             override fun onFingerprintSuccessful() {
+                Toast.makeText(this@PinActivity, "Pin successful", Toast.LENGTH_LONG).show()
+                finish()
             }
 
             override fun onFingerprintLoginFailed() {
             }
 
             override fun onCodeInputSuccessful() {
+                Toast.makeText(this@PinActivity, "Pin successful", Toast.LENGTH_LONG).show()
+                finish()
             }
         })
         replaceFragment(R.id.simpleFragmentContainer, authFragment)
     }
+
+    private fun displayForgotPinWarningDialog() {
+        AlertDialog.Builder(this)
+                .setTitle("Reset pin")
+                .setMessage("To reset your PIN, you'll need to re-login and create a new one.")
+                .setPositiveButton("Reset pin") { _, _ ->
+                    showCreateFragment()
+                }
+                .setNegativeButton(R.string.cancel, null)
+                .show()
+    }
 }
diff --git a/vector/src/main/res/drawable/pin_code_dot_empty.xml b/vector/src/main/res/drawable/pin_code_dot_empty.xml
new file mode 100644
index 0000000000..6ee800a07d
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dot_empty.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+
+    <stroke
+        android:color="?riotx_text_secondary"
+        android:width="1px"/>
+
+    <size
+        android:width="24dp"
+        android:height="24dp"/>
+</shape>
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/pin_code_dot_fill.xml b/vector/src/main/res/drawable/pin_code_dot_fill.xml
new file mode 100644
index 0000000000..799ea30174
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dot_fill.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+
+    <solid
+        android:color="?colorPrimary"/>
+
+    <size
+        android:width="24dp"
+        android:height="24dp"/>
+</shape>
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/pin_code_dots.xml b/vector/src/main/res/drawable/pin_code_dots.xml
new file mode 100644
index 0000000000..29e445e511
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dots.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- NOTE: order is important (the first matching state(s) is what is rendered) -->
+    <item
+        android:state_checked="true"
+        android:drawable="@drawable/pin_code_dot_fill"/>
+    <item
+        android:drawable="@drawable/pin_code_dot_empty"/>
+</selector>
\ No newline at end of file
diff --git a/vector/src/main/res/values/styles_pin_code.xml b/vector/src/main/res/values/styles_pin_code.xml
new file mode 100644
index 0000000000..498b791e05
--- /dev/null
+++ b/vector/src/main/res/values/styles_pin_code.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="PinCodeScreenStyle" >
+        <item name="android:background">?riotx_background</item>
+    </style>
+
+    <style name="PinCodeKeyButtonStyle">
+        <item name="android:textColor">?riotx_text_primary</item>
+        <item name="android:textSize">18sp</item>
+        <item name="background">@drawable/touch_selector_pf</item>
+    </style>
+
+    <style name="PinCodeDotsViewStyle">
+        <item name="android:button">@drawable/pin_code_dots</item>
+    </style>
+
+    <style name="PinCodeNextButtonStyle" parent="VectorButtonStylePositive">
+        <item name="android:textSize">18sp</item>
+        <item name="android:backgroundTint">@android:color/transparent</item>
+        <item name="android:layout_marginBottom">24dp</item>
+    </style>
+
+    <style name="PinCodeDeleteButtonStyle">
+        <item name="android:src">@drawable/delete_lockscreen_pf</item>
+        <item name="android:tint">?riotx_text_primary</item>
+        <item name="background">@drawable/touch_selector_pf</item>
+    </style>
+
+    <style name="PinCodeFingerprintButtonStyle">
+        <item name="android:src">@drawable/fingerprint_lockscreen_pf</item>
+        <item name="android:tint">?riotx_text_primary</item>
+        <item name="background">@drawable/touch_selector_pf</item>
+    </style>
+
+    <style name="PinCodeTitleStyle">
+        <item name="android:textColor">?riotx_text_primary</item>
+    </style>
+
+    <style name="PinCodeHintStyle">
+        <item name="android:textColor">?riotx_text_primary</item>
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/vector/src/main/res/values/theme_dark.xml b/vector/src/main/res/values/theme_dark.xml
index fae33cf6bf..a391e48cfb 100644
--- a/vector/src/main/res/values/theme_dark.xml
+++ b/vector/src/main/res/values/theme_dark.xml
@@ -222,6 +222,16 @@
         <item name="snackbarButtonStyle">@style/VectorSnackBarButton</item>
         <!-- Style to use for message text within a SnackBar in this theme. -->
         <item name="snackbarTextViewStyle">@style/VectorSnackBarText</item>
+
+        <item name="pf_lock_screen">@style/PinCodeScreenStyle</item>
+        <item name="pf_key_button">@style/PinCodeKeyButtonStyle</item>
+        <item name="pf_title">@style/PinCodeTitleStyle</item>
+        <item name="pf_hint">@style/PinCodeHintStyle</item>
+        <item name="pf_code_view">@style/PinCodeDotsViewStyle</item>
+        <item name="pf_delete_button">@style/PinCodeDeleteButtonStyle</item>
+        <item name="pf_fingerprint_button">@style/PinCodeFingerprintButtonStyle</item>
+        <item name="pf_next">@style/PinCodeNextButtonStyle</item>
+
     </style>
 
     <style name="AppTheme.Dark" parent="AppTheme.Base.Dark" />
diff --git a/vector/src/main/res/values/theme_light.xml b/vector/src/main/res/values/theme_light.xml
index 28b29094e5..cfd7b7cc81 100644
--- a/vector/src/main/res/values/theme_light.xml
+++ b/vector/src/main/res/values/theme_light.xml
@@ -222,6 +222,16 @@
         <item name="snackbarButtonStyle">@style/VectorSnackBarButton</item>
         <!-- Style to use for message text within a SnackBar in this theme. -->
         <item name="snackbarTextViewStyle">@style/VectorSnackBarText</item>
+
+        <item name="pf_lock_screen">@style/PinCodeScreenStyle</item>
+        <item name="pf_key_button">@style/PinCodeKeyButtonStyle</item>
+        <item name="pf_title">@style/PinCodeTitleStyle</item>
+        <item name="pf_hint">@style/PinCodeHintStyle</item>
+        <item name="pf_code_view">@style/PinCodeDotsViewStyle</item>
+        <item name="pf_delete_button">@style/PinCodeDeleteButtonStyle</item>
+        <item name="pf_fingerprint_button">@style/PinCodeFingerprintButtonStyle</item>
+        <item name="pf_next">@style/PinCodeNextButtonStyle</item>
+
     </style>
 
     <style name="AppTheme.Light" parent="AppTheme.Base.Light" />