diff --git a/Graphics/Vty/Cursor.hs b/Graphics/Vty/Cursor.hs
--- a/Graphics/Vty/Cursor.hs
+++ b/Graphics/Vty/Cursor.hs
@@ -82,8 +82,12 @@
 -- ANSI specific bits
 chgatt :: Attr -> IO ()
 chgatt (Attr bf)
-      = putStr "\ESC[0;3" >> putShow (bf .&. 0xFF) >> putStr ";4" >> putShow ((bf `shiftR` 8) .&. 0xFF) >> 0x10000 ? ";1" >>
-        0x20000 ? ";5" >> 0x40000 ? ";7" >> 0x80000 ? ";2" >> 0x100000 ? ";4" >> putStr "m"
+      = putStr "\ESC[0;" >>
+        putShow (bf .&. 0xFF) >> 
+        putStr ";" >> putShow ((bf `shiftR` 8) .&. 0xFF) >> 
+        0x10000 ? ";1" >>
+        0x20000 ? ";5" >> 0x40000 ? ";7" >> 0x80000 ? ";2" >> 0x100000 ? ";4" >> 
+        putStr "m"
     where
       {-# INLINE (?) #-}
       (?) :: Int -> [Char] -> IO ()
diff --git a/Graphics/Vty/LLInput.hs b/Graphics/Vty/LLInput.hs
--- a/Graphics/Vty/LLInput.hs
+++ b/Graphics/Vty/LLInput.hs
@@ -72,7 +72,7 @@
                   setFdOption stdInput NonBlockingRead False
                   threadWaitRead stdInput
                   setFdOption stdInput NonBlockingRead True
-                  try readAll 
+                  try readAll :: IO (Either IOException ())
                   writeChan inputChannel '\xFFFE'
                   loop
               readAll = do
diff --git a/Graphics/Vty/Types.hs b/Graphics/Vty/Types.hs
--- a/Graphics/Vty/Types.hs
+++ b/Graphics/Vty/Types.hs
@@ -22,12 +22,21 @@
 
 -- | Set the foreground color of an `Attr'.
 setFG :: Color -> Attr -> Attr
-setFG (Color c) (Attr a) = Attr ((a .&. 0xFFFFFF00) .|. c)
+setFG (Color c) (Attr a) = Attr ((a .&. 0xFFFFFF00) .|. (30 + c))
 
 -- | Set the background color of an `Attr'.
 setBG :: Color -> Attr -> Attr
-setBG (Color c) (Attr a) = Attr ((a .&. 0xFFFF00FF) .|. (c `shiftL` 8))
+setBG (Color c) (Attr a) = Attr ((a .&. 0xFFFF00FF) .|. ((40 + c) `shiftL` 8))
 
+-- | Set the foreground color of an `Attr'.
+setFGVivid :: Color -> Attr -> Attr
+setFGVivid (Color c) (Attr a) = Attr ((a .&. 0xFFFFFF00) .|. (90 + c))
+
+-- | Set the background color of an `Attr'.
+setBGVivid :: Color -> Attr -> Attr
+setBGVivid (Color c) (Attr a) = Attr ((a .&. 0xFFFF00FF) .|. ((100 + c) `shiftL` 8))
+
+  
 -- | Set bold attribute of an `Attr'.
 setBold :: Attr -> Attr
 setBold (Attr a) = Attr (a .|. 0x10000)
diff --git a/vty.cabal b/vty.cabal
--- a/vty.cabal
+++ b/vty.cabal
@@ -1,5 +1,5 @@
 Name:                vty
-Version:             3.1.2
+Version:             3.1.4
 License:             BSD3
 License-file:        LICENSE
 Author:              Stefan O'Rear
