diff --git a/src/raw.rs b/src/raw.rs
index 14cc87c3d3b19cb24782f748425f414bb294fdde..bd9c8ec03087eec3a147a390b75ad6f1a1571298 100644
--- a/src/raw.rs
+++ b/src/raw.rs
@@ -40,7 +40,8 @@ pub struct RawTerminal<W: Write> {
 #[cfg(target_os = "redox")]
 impl<W: Write> Drop for RawTerminal<W> {
     fn drop(&mut self) {
-        write!(self, csi!("?82l")).unwrap();
+        let _ = write!(self, csi!("?82l"));
+        let _ = self.flush();
     }
 }
 
@@ -129,7 +130,9 @@ impl<W: Write> IntoRawMode for W {
 
     #[cfg(target_os = "redox")]
     fn into_raw_mode(mut self) -> io::Result<RawTerminal<W>> {
-        write!(self, csi!("?82h")).map(|_| RawTerminal { output: self })
+        write!(self, csi!("?82h"))?;
+        self.flush()?;
+        Ok(RawTerminal { output: self })
     }
 }