diff --git a/MiniScanner/Extensions/Image+Images.swift b/MiniScanner/Extensions/Image+Images.swift
index 144c438dbacb22281c44e8e2dd363b429d327876..f4616a77478f82bf332844e031a6ceb71ff5787f 100644
--- a/MiniScanner/Extensions/Image+Images.swift
+++ b/MiniScanner/Extensions/Image+Images.swift
@@ -16,4 +16,5 @@ extension Image {
 // MARK: - Common system images and icons
 extension Image {
     
+    static let chevronBackward = Image(systemName: "chevron.backward")
 }
diff --git a/MiniScanner/Features/Settings/Presentation/SettingsView.swift b/MiniScanner/Features/Settings/Presentation/SettingsView.swift
index 868a0f7fd02849af707f166f790d0233b47d76bb..90958680a1b44b67a0db4a5d1ea51ceb1437d19b 100644
--- a/MiniScanner/Features/Settings/Presentation/SettingsView.swift
+++ b/MiniScanner/Features/Settings/Presentation/SettingsView.swift
@@ -27,10 +27,26 @@ struct SettingsView: View {
                     settingsForm
                 }
             }
+            .navigationTitle(viewModel.navigationTitle)
+            .customNavigationBackButton(defaultBackButtonHidden: viewModel.isDefaultBackButtonHidden,
+                                        backButton: backButton)
             .environment(\.layoutDirection, viewModel.layoutDirection)
         }
     }
     
+    private var backButton: some View {
+        Button(action: {
+            viewModel.onBackButtonClick()
+        }, label: {
+            HStack(spacing: 4) {
+                
+                Image.chevronBackward
+                
+                Text(viewModel.backButtonTitle)
+            }
+        })
+    }
+    
     private var settingsForm: some View {
         
         Form {
@@ -51,7 +67,7 @@ struct SettingsView: View {
 extension SettingsView {
     
     private var language: some View {
-        CustomMenuPicker(selectedItem: $viewModel.selectedLangauge,
+        CustomMenuPicker(selectedItem: $viewModel.selectedLanguage,
                          items: viewModel.languages,
                          label: { languageLabel })
     }
@@ -63,9 +79,9 @@ extension SettingsView {
             
             Spacer()
             
-            Text(viewModel.selectedLangauge.displayedName)
+            Text(viewModel.selectedLanguage.displayedName)
             
-            Text(viewModel.selectedLangauge.flag)
+            Text(viewModel.selectedLanguage.flag)
         }
         .foregroundStyle(Color.mainText)
     }
@@ -92,3 +108,31 @@ extension SettingsView {
 #Preview {
     SettingsView(coordinator: SettingsViewCoordinator(navigationController: UINavigationController()))
 }
+
+fileprivate extension View {
+    
+    func customNavigationBackButton<T: View>(defaultBackButtonHidden: Bool,
+                                             backButton: T) -> some View {
+        ModifiedContent(content: self,
+                        modifier: CustomBackButtonViewModifier(defaultBackButtonHidden: defaultBackButtonHidden, backButton: backButton))
+    }
+}
+
+fileprivate struct CustomBackButtonViewModifier<T: View>: ViewModifier {
+    
+    var defaultBackButtonHidden: Bool
+    var backButton: T
+    
+    func body(content: Content) -> some View {
+        
+        if defaultBackButtonHidden {
+            
+            content
+                .navigationBarBackButtonHidden(defaultBackButtonHidden)
+                .navigationBarItems(leading: backButton)
+        }
+        else {
+            content
+        }
+    }
+}
diff --git a/MiniScanner/Features/Settings/Presentation/SettingsViewCoordinator.swift b/MiniScanner/Features/Settings/Presentation/SettingsViewCoordinator.swift
index 8f1578a98008c244b156fc9ee41a65945280f945..2d52efbcd9a8a3dbe99a3d779e4a092d04d01638 100644
--- a/MiniScanner/Features/Settings/Presentation/SettingsViewCoordinator.swift
+++ b/MiniScanner/Features/Settings/Presentation/SettingsViewCoordinator.swift
@@ -8,11 +8,11 @@
 
 import Foundation
 
-protocol SettingsViewCoordinating {
+protocol SettingsViewCoordinating: MainCoordinator {
     var navigationController: UINavigationController { get set }
 }
 
-class SettingsViewCoordinator: SettingsViewCoordinating, MainCoordinator {
+class SettingsViewCoordinator: SettingsViewCoordinating {
     
     var navigationController: UINavigationController
     
diff --git a/MiniScanner/Features/Settings/Presentation/SettingsViewModel.swift b/MiniScanner/Features/Settings/Presentation/SettingsViewModel.swift
index d197fcd0723288bbe37ff57be7a19ce03c00eb13..f3e24db0dc064ffef4fcb02706ead6b17ec0dcf7 100644
--- a/MiniScanner/Features/Settings/Presentation/SettingsViewModel.swift
+++ b/MiniScanner/Features/Settings/Presentation/SettingsViewModel.swift
@@ -17,9 +17,9 @@ final class SettingsViewModel: MainViewModel {
     @Published var languages: [SupportedLanguage] = []
     @Published var colorShemes: [SupportedColorScheme] = []
     
-    @Published var selectedLangauge: SupportedLanguage = .device {
+    @Published var selectedLanguage: SupportedLanguage = .device {
         didSet {
-            changeLanguage(to: selectedLangauge)
+            changeLanguage(to: selectedLanguage)
         }
     }
     
@@ -29,6 +29,11 @@ final class SettingsViewModel: MainViewModel {
         }
     }
     
+    @Published var isDefaultBackButtonHidden: Bool = false
+    
+    var navigationTitle: String { .settings.localized }
+    var backButtonTitle: String { .fileManager.localized }
+    
     @Inject var getLanguagesUseCase: GetLanguagesUseCase
     @Inject var getLanguageUseCase: GetLanguageUseCase
     @Inject var changeLanguageUseCase: ChangeLanguageUseCase
@@ -56,7 +61,7 @@ extension SettingsViewModel {
         languages = getLanguagesUseCase.execute()
         colorShemes = SupportedColorScheme.allCases
         
-        selectedLangauge = getLanguageUseCase.execute()
+        selectedLanguage = getLanguageUseCase.execute()
         selectedColorScheme = getColorSchemeUseCase.execute()
     }
 }
@@ -64,14 +69,21 @@ extension SettingsViewModel {
 extension SettingsViewModel {
     
     private func changeLanguage(to language: SupportedLanguage) {
+        
+        let previousLanguage = SupportedLanguage.currentLanguage
+        
         changeLanguageUseCase.execute(to: language)
-        layoutDirection = language.layoutDirection
         
-        refreshLocalization()
+        layoutDirection = language.layoutDirection
         
         if language.layoutDirection == .leftToRight {
             refreshView.toggle()
         }
+        
+        if previousLanguage != SupportedLanguage.currentLanguage {
+            
+            refreshSemanticContentAttribute()
+        }
     }
     
     private func changeColorShceme(to colorScheme: SupportedColorScheme) {
@@ -81,30 +93,18 @@ extension SettingsViewModel {
 
 extension SettingsViewModel {
     
-    private func refreshLocalization() {
+    private func refreshSemanticContentAttribute() {
         let navigationController = coordinator.navigationController
-        
-        let settings = navigationController.topViewController!
-        let filesManager = navigationController.viewControllers[0]
-        
-        settings.navigationItem.title = .settings.localized
-        filesManager.navigationItem.title = .fileManager.localized
-        
+
         let semanticContentAttribute = SupportedLanguage.currentLanguage.semanticContentAttribute
         
         navigationController.tabBarController?.tabBar.semanticContentAttribute = semanticContentAttribute
         navigationController.navigationBar.semanticContentAttribute = semanticContentAttribute
         
-        handleBackIcon()
+        isDefaultBackButtonHidden = true
     }
     
-    private func handleBackIcon() {
-        
-        let navigationController = coordinator.navigationController
-        
-        let backImage: UIImage? = SupportedLanguage.currentLanguage.layoutDirection == .leftToRight ? .chevronLeft : .chevronRight
-        
-        navigationController.navigationBar.backIndicatorImage = backImage
-        navigationController.navigationBar.backIndicatorTransitionMaskImage = backImage
+    func onBackButtonClick() {
+        coordinator.coordinateBack()
     }
 }
diff --git a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
index 5c7cce1edd13bc8280198627e0468abd26bea1ad..d7bc532c3f9cea1645c00fdb232b42886bea91fe 100644
--- a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
+++ b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
@@ -63,7 +63,6 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate,
         }
         scanSession =  MultiPageScanSession()
         options = ImageScannerOptions()
-        navigationItem.title = .fileManager.localized
         let settingsButton = UIBarButtonItem(image: .settings, style: .done, target: self, action: #selector(openSettings))
         navigationItem.rightBarButtonItem = settingsButton
         
@@ -126,6 +125,7 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate,
         fetchViewModels()
         
         handleBackIcon()
+        navigationItem.title = .fileManager.localized
         noFilesLabel.set(text: .noFilesToShow.localized, color: .mainText, font: .medium(22))
         
         AllFolderView.reloadLocalization()
@@ -639,7 +639,17 @@ extension DocumentsTableViewController {
         
         let navigationController = navigationController!
         
-        let backImage: UIImage? = SupportedLanguage.currentLanguage.layoutDirection == .leftToRight ? .chevronLeft : .chevronRight
+        var backImage: UIImage? = nil
+        
+        let deviceLanguage = SupportedLanguage.device.language
+        let currentLanguageLayoutDirection = SupportedLanguage.currentLanguage.layoutDirection
+        
+        if deviceLanguage == .ar {
+            backImage = currentLanguageLayoutDirection == .leftToRight ? .chevronRight : .chevronLeft
+        }
+        else {
+            backImage = currentLanguageLayoutDirection == .leftToRight ? .chevronLeft : .chevronRight
+        }
         
         navigationController.navigationBar.backIndicatorImage = backImage
         navigationController.navigationBar.backIndicatorTransitionMaskImage = backImage