diff --git a/src/lzmadec/lzmadec.c b/src/lzmadec/lzmadec.c
index 10d5cc6..eca58b9 100644
--- a/src/lzmadec/lzmadec.c
+++ b/src/lzmadec/lzmadec.c
@@ -28,6 +28,10 @@ extern int errno;
 #include <stdio.h>
 #include <unistd.h>
 
+#ifdef WIN32
+#	include <fcntl.h>
+#endif
+
 #include "getopt.h"
 #include "physmem.h"
 
@@ -489,6 +493,11 @@ main(int argc, char **argv)
 	allocator.opaque = mem_limitter;
 	strm.allocator = &allocator;
 
+#ifdef WIN32
+	setmode(fileno(stdin), O_BINARY);
+	setmode(fileno(stdout), O_BINARY);
+#endif
+
 	if (optind == argc) {
 		file = stdin;
 		filename = "(stdin)";