diff --git a/src/tty/unix.rs b/src/tty/unix.rs
index dad14a848de5d809ab93fed569f7a2d138e7ca14..1feb4742432419d987e5c415e7ab8f0227fefe97 100644
--- a/src/tty/unix.rs
+++ b/src/tty/unix.rs
@@ -106,13 +106,13 @@ pub fn enable_raw_mode() -> Result<Mode> {
     raw.c_lflag = raw.c_lflag & !(ECHO | ICANON | IEXTEN | ISIG);
     raw.c_cc[VMIN] = 1; // One character-at-a-time input
     raw.c_cc[VTIME] = 0; // with blocking read
-    try!(termios::tcsetattr(STDIN_FILENO, termios::TCSAFLUSH, &raw));
+    try!(termios::tcsetattr(STDIN_FILENO, termios::TCSADRAIN, &raw));
     Ok(original_mode)
 }
 
 /// Disable RAW mode for the terminal.
 pub fn disable_raw_mode(original_mode: Mode) -> Result<()> {
-    try!(termios::tcsetattr(STDIN_FILENO, termios::TCSAFLUSH, &original_mode));
+    try!(termios::tcsetattr(STDIN_FILENO, termios::TCSADRAIN, &original_mode));
     Ok(())
 }