diff --git a/apps/files/js/breadcrumb.js b/apps/files/js/breadcrumb.js
index 5cea2639c7dd997401657daf43895ab2d9d5e935..364475e4a4fd9c26db4a0c9546bc03a9241d055d 100644
--- a/apps/files/js/breadcrumb.js
+++ b/apps/files/js/breadcrumb.js
@@ -67,6 +67,7 @@
 		 * @param dir path to be displayed as breadcrumb
 		 */
 		setDirectory: function(dir) {
+			dir = dir.replace(/\\/g, '/');
 			dir = dir || '/';
 			if (dir !== this.dir) {
 				this.dir = dir;
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index c5c665cee77cb57de6447e53b16db5c9ddcf2dd3..e5634323ef1e0d711458c62acc55d12d5985db96 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1009,6 +1009,7 @@
 		 * @param changeUrl true to also update the URL, false otherwise (default)
 		 */
 		_setCurrentDir: function(targetDir, changeUrl) {
+			targetDir = targetDir.replace(/\\/g, '/');
 			var previousDir = this.getCurrentDirectory(),
 				baseDir = OC.basename(targetDir);
 
diff --git a/apps/files/tests/js/breadcrumbSpec.js b/apps/files/tests/js/breadcrumbSpec.js
index 30784fd70ad636bcf312e634b7cd4d48903c8883..a26f0176f155cbe405e80d7c20aa0f8ffe41fe56 100644
--- a/apps/files/tests/js/breadcrumbSpec.js
+++ b/apps/files/tests/js/breadcrumbSpec.js
@@ -93,6 +93,31 @@ describe('OCA.Files.BreadCrumb tests', function() {
 			expect($crumbs.eq(3).find('img').length).toEqual(0);
 			expect($crumbs.eq(3).attr('data-dir')).toEqual('/somedir/with space/abc');
 		});
+		it('Renders backslashes as regular directory separator', function() {
+			var $crumbs;
+			bc.setDirectory('/somedir\\with/mixed\\separators');
+			$crumbs = bc.$el.find('.crumb');
+			expect($crumbs.length).toEqual(5);
+			expect($crumbs.eq(0).find('a').attr('href')).toEqual('/#0');
+			expect($crumbs.eq(0).find('img').length).toEqual(1);
+			expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
+
+			expect($crumbs.eq(1).find('a').attr('href')).toEqual('/somedir#1');
+			expect($crumbs.eq(1).find('img').length).toEqual(0);
+			expect($crumbs.eq(1).attr('data-dir')).toEqual('/somedir');
+
+			expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir/with#2');
+			expect($crumbs.eq(2).find('img').length).toEqual(0);
+			expect($crumbs.eq(2).attr('data-dir')).toEqual('/somedir/with');
+
+			expect($crumbs.eq(3).find('a').attr('href')).toEqual('/somedir/with/mixed#3');
+			expect($crumbs.eq(3).find('img').length).toEqual(0);
+			expect($crumbs.eq(3).attr('data-dir')).toEqual('/somedir/with/mixed');
+
+			expect($crumbs.eq(4).find('a').attr('href')).toEqual('/somedir/with/mixed/separators#4');
+			expect($crumbs.eq(4).find('img').length).toEqual(0);
+			expect($crumbs.eq(4).attr('data-dir')).toEqual('/somedir/with/mixed/separators');
+		});
 	});
 	describe('Events', function() {
 		it('Calls onClick handler when clicking on a crumb', function() {
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 59e3f8a9d4eee5e436e8df9d91a1e809ed3297d5..d44365f635103664f179324679116c084a204b25 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -1221,7 +1221,7 @@ describe('OCA.Files.FileList tests', function() {
 						"Content-Type": "application/json"
 					},
 					JSON.stringify(data)
-			]);
+				]);
 		});
 		it('fetches file list from server and renders it when reload() is called', function() {
 			fileList.reload();
@@ -1242,6 +1242,10 @@ describe('OCA.Files.FileList tests', function() {
 			expect(OC.parseQueryString(query)).toEqual({'dir': '/anothersubdir', sort: 'name', sortdirection: 'asc'});
 			fakeServer.respond();
 		});
+		it('converts backslashes to slashes when calling changeDirectory()', function() {
+			fileList.changeDirectory('/another\\subdir');
+			expect(fileList.getCurrentDirectory()).toEqual('/another/subdir');
+		});
 		it('switches to root dir when current directory does not exist', function() {
 			fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [
 					404, {