diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a387f240d4897bad1225b51cc879cf950fec9711..ec8ef999956ea013c16cd9e8db87ac35ace976b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -27,6 +27,7 @@
         </activity>
         <activity android:name=".activities.ExpandImageActivity" />
         <activity android:name=".activities.CameraActivity" />
+        <activity android:name=".activities.PreviewActivity" />
         <meta-data
             android:name="preloaded_fonts"
             android:resource="@array/preloaded_fonts" />
diff --git a/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt
index 0c46d012561c781b3ed9b47cb39b586879ce01af..5df0e052a49031f73b90df037ca625094b317186 100644
--- a/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt
+++ b/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt
@@ -167,12 +167,11 @@ class CameraActivity : AppCompatActivity() {
 
 		// send URI to MainActivity
 		startActivity(
-			Intent(this, MainActivity::class.java)
+			Intent(this, PreviewActivity::class.java)
 				.putExtra(MainActivity.EXTRA_NAME_IMAGE_URI_STRING, uri.toString())
 				.putExtra(MainActivity.EXTRA_NAME_IS_RESULT, true)
 				.putExtra(MainActivity.EXTRA_NAME_IS_FROM_CAMERA, true)
-				.putExtra(MainActivity.EXTRA_NAME_IS_RESET, true)
-				.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_SINGLE_TOP),
+				.putExtra(MainActivity.EXTRA_NAME_IS_RESET, true),
 		)
 	}
 
diff --git a/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt
index 91024e411374cc6aa1c6acd05f4cbf92faa0805d..dac21913d9d15f84deed6e15f0e9f580e8a15337 100644
--- a/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt
+++ b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt
@@ -61,25 +61,25 @@ class MainActivity : AppCompatActivity() {
 		pickImage.launch(intent)
 	}
 
-	private val pickImage = registerForActivityResult(
-		ActivityResultContracts.StartActivityForResult()
-	) { result: ActivityResult ->
-		if (result.resultCode == RESULT_OK) {
-			val data: Intent? = result.data
-			val imageUri: Uri? = data?.data
-
-			if (imageUri != null) {
-				val intent = Intent(this, MainActivity::class.java)
-
-				intent.putExtra(EXTRA_NAME_IS_RESULT, true)
-				intent.putExtra(EXTRA_NAME_IS_RESET, true)
-				intent.putExtra(EXTRA_NAME_IS_FROM_CAMERA, false)
-				intent.putExtra(EXTRA_NAME_IMAGE_URI_STRING, imageUri.toString())
-
-				startActivity(intent)
+	private val pickImage =
+		registerForActivityResult(
+			ActivityResultContracts.StartActivityForResult(),
+		) { result: ActivityResult ->
+			if (result.resultCode == RESULT_OK) {
+				val data: Intent? = result.data
+				val imageUri: Uri? = data?.data
+
+				if (imageUri != null) {
+					val intent = Intent(this, PreviewActivity::class.java)
+
+					intent.putExtra(EXTRA_NAME_IS_RESULT, true)
+					intent.putExtra(EXTRA_NAME_IS_RESET, true)
+					intent.putExtra(EXTRA_NAME_IS_FROM_CAMERA, false)
+					intent.putExtra(EXTRA_NAME_IMAGE_URI_STRING, imageUri.toString())
+					startActivity(intent)
+				}
 			}
 		}
-	}
 
 	private fun requirePermission(
 		permission: String,
@@ -193,6 +193,8 @@ class MainActivity : AppCompatActivity() {
 	override fun onNewIntent(intent: Intent?) {
 		super.onNewIntent(intent)
 
+		// Important assumption: home page is always below result page in the activity stack
+
 		if (intent != null) {
 			if (isCreated && (isResult.xor(intent.getBooleanExtra(EXTRA_NAME_IS_RESULT, false)))) {
 				// wrong activity reused, restarting the new intent and finishing this activity
diff --git a/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..aceac03c15e6a4a329a0122bdccd16fe0578d325
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt
@@ -0,0 +1,56 @@
+package com.k2_9.omrekap.activities
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.widget.ImageButton
+import androidx.appcompat.app.AppCompatActivity
+import com.github.chrisbanes.photoview.PhotoView
+import com.k2_9.omrekap.R
+
+class PreviewActivity : AppCompatActivity() {
+	private var imageUriString: String? = null
+	private var isFromCamera: Boolean = false
+
+	override fun onCreate(savedInstanceState: Bundle?) {
+		super.onCreate(savedInstanceState)
+		setContentView(R.layout.activity_preview)
+
+		// display photo
+		val photoView: PhotoView = findViewById(R.id.preview_content)
+
+		imageUriString = intent.getStringExtra(MainActivity.EXTRA_NAME_IMAGE_URI_STRING)
+		isFromCamera = intent.getBooleanExtra(MainActivity.EXTRA_NAME_IS_FROM_CAMERA, false)
+
+		if (imageUriString == null) {
+			throw IllegalArgumentException("Image URI string is null")
+		}
+
+		photoView.setImageURI(Uri.parse(imageUriString))
+
+		// set buttons action
+		val acceptButton = findViewById<ImageButton>(R.id.accept_preview_button)
+		val rejectButton = findViewById<ImageButton>(R.id.reject_preview_button)
+
+		acceptButton.setOnClickListener {
+			val newIntent = Intent(this, MainActivity::class.java)
+
+			intent.extras?.let { extras ->
+				newIntent.putExtras(extras)
+			}
+
+			if (isFromCamera) {
+				newIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+			} else {
+				newIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
+			}
+
+			finish()
+			startActivity(newIntent)
+		}
+
+		rejectButton.setOnClickListener {
+			finish()
+		}
+	}
+}
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6283bb40c1e5eecab26b42cb3ea580d14fef9810
--- /dev/null
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M5,12l5,5l10,-10"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="@color/white"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_x.xml b/app/src/main/res/drawable/ic_x.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9029a287cc797163ec3596336d6c17f387ab7646
--- /dev/null
+++ b/app/src/main/res/drawable/ic_x.xml
@@ -0,0 +1,20 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M18,6l-12,12"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="@color/white"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M6,6l12,12"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="@color/white"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/layout/activity_camera.xml b/app/src/main/res/layout/activity_camera.xml
index 6ce9b93c571ad0474677b81e9f0fe60c3338f92d..c50acf38fb6eb74944f8f811d43717eeb73d5ed2 100644
--- a/app/src/main/res/layout/activity_camera.xml
+++ b/app/src/main/res/layout/activity_camera.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="#000000">
+    android:background="@color/black">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/camera_image_layout"
diff --git a/app/src/main/res/layout/activity_preview.xml b/app/src/main/res/layout/activity_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9bb9a82019712bf57500e7dad22ad1c03561f1c9
--- /dev/null
+++ b/app/src/main/res/layout/activity_preview.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/black"
+    tools:context=".activities.ExpandImageActivity">
+
+    <com.github.chrisbanes.photoview.PhotoView
+        android:id="@+id/preview_content"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:scaleType="fitCenter"
+        android:layout_marginTop="59dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintDimensionRatio="@string/ratio_image" />
+
+    <ImageButton
+        android:id="@+id/accept_preview_button"
+        android:theme="@style/ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground"
+        android:layout_width="63dp"
+        android:layout_height="63dp"
+        android:background="@drawable/bg_round"
+        android:contentDescription="@string/desc_accept_preview"
+        android:layout_marginRight="@dimen/margin_horizontal_preview_button"
+        android:src="@drawable/ic_check"
+        app:tint="@color/acceptPreviewButton"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/preview_content"/>
+    <ImageButton
+        android:id="@+id/reject_preview_button"
+        android:theme="@style/ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground"
+        android:layout_width="63dp"
+        android:layout_height="63dp"
+        android:background="@drawable/bg_round"
+        android:contentDescription="@string/desc_reject_preview"
+        android:layout_marginLeft="@dimen/margin_horizontal_preview_button"
+        android:src="@drawable/ic_x"
+        app:tint="@color/rejectPreviewButton"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/preview_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 8a9cada7e14cec3842acb1f46a726c7b76b3f41a..8dcda9abf7e7ad89ed7490d01c720754dcc607bb 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -12,4 +12,6 @@
     <color name="backgroundExpandButton">#11FFFFFF</color>
     <color name="white_opacity_16">#80FFFFFF</color>
     <color name="white_opacity_0">#00FFFFFF</color>
+    <color name="acceptPreviewButton">#00FF00</color>
+    <color name="rejectPreviewButton">#FF0000</color>
 </resources>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 045e125f3d8dad8668061d471dd9869e29e4713a..405cccda97c9ba7fdf006cf3769dad52894e7d48 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,3 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
+    <dimen name="margin_horizontal_preview_button">50dp</dimen>
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 783c23ca787cb6cf18850d4bdfe23fac1795a505..e93284ccafd1838b645c8ecb336de1c24bff911f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,4 +10,7 @@
     <string name="ratio_image">3:4</string>
     <string name="ratio_square">1:1</string>
     <string name="img_omr_description">OMR Illustration</string>
+    <string name="title_activity_preview">PreviewActivity</string>
+    <string name="desc_accept_preview">accept preview</string>
+    <string name="desc_reject_preview">reject preview</string>
 </resources>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 0b4f70750de71292df97c7864eb2e12a294dae4f..6b5be61a744bea97bedf6711e9ee3043c08c420b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -17,6 +17,11 @@
         <item name="RoundBackgroundColor">@color/backgroundExpandButton</item>
     </style>
 
+    <style name="ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground" parent="">
+        <item name="RoundBackgroundRadius">100dp</item>
+        <item name="RoundBackgroundColor">@color/white</item>
+    </style>
+
     <style name="TextAppearance.Heading1" parent="@android:style/TextAppearance">
         <item name="android:textSize">30sp</item>
         <item name="android:fontFamily">@font/inter_bold</item>