diff --git a/src/System/Taffybar/Util.hs b/src/System/Taffybar/Util.hs
--- a/src/System/Taffybar/Util.hs
+++ b/src/System/Taffybar/Util.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      : System.Taffybar.Util
@@ -21,6 +22,7 @@
 import           Control.Monad.Trans.Class
 import           Control.Monad.Trans.Maybe
 import           Control.Monad.Trans.Reader
+import           Data.Maybe
 import           Data.Either.Combinators
 import           Data.GI.Base.GError
 import qualified Data.GI.Gtk.Threading as Gtk
@@ -127,17 +129,26 @@
 catchGErrorsAsLeft :: IO a -> IO (Either GError a)
 catchGErrorsAsLeft action = catch (Right <$> action) (return . Left)
 
-safePixbufNewFromFile :: FilePath -> IO (Either GError Gdk.Pixbuf)
-safePixbufNewFromFile filepath =
-  catchGErrorsAsLeft (Gdk.pixbufNewFromFile filepath)
+catchGErrorsAsNothing :: IO a -> IO (Maybe a)
+catchGErrorsAsNothing = fmap rightToMaybe . catchGErrorsAsLeft
 
+safePixbufNewFromFile :: FilePath -> IO (Maybe Gdk.Pixbuf)
+safePixbufNewFromFile =
+  handleResult . catchGErrorsAsNothing . Gdk.pixbufNewFromFile
+  where
+#if MIN_VERSION_gi_gdkpixbuf(2,0,26)
+    handleResult = fmap join
+#else
+    handleResult = id
+#endif
+
 getPixbufFromFilePath :: FilePath -> IO (Maybe Gdk.Pixbuf)
 getPixbufFromFilePath filepath = do
   result <- safePixbufNewFromFile filepath
-  when (isLeft result) $
+  when (isNothing result) $
        logM "System.Taffybar.WindowIcon" WARNING $
             printf "Failed to load icon from filepath %s" filepath
-  return $ rightToMaybe result
+  return result
 
 postGUIASync :: IO () -> IO ()
 postGUIASync = Gtk.postGUIASync
diff --git a/src/System/Taffybar/Widget/MPRIS2.hs b/src/System/Taffybar/Widget/MPRIS2.hs
--- a/src/System/Taffybar/Widget/MPRIS2.hs
+++ b/src/System/Taffybar/Widget/MPRIS2.hs
@@ -59,7 +59,7 @@
     newPlayerWidget :: BusName -> IO MPRIS2PlayerWidget
     newPlayerWidget busName =
       do
-        let loadDefault size = catchGErrorsAsLeft (loadIcon size "play.svg")
+        let loadDefault size = loadIcon size "play.svg"
                 >>= either failure return
               where failure err =
                       mprisLog WARNING "Failed to load default image: %s" err >>
diff --git a/src/System/Taffybar/Widget/Util.hs b/src/System/Taffybar/Widget/Util.hs
--- a/src/System/Taffybar/Widget/Util.hs
+++ b/src/System/Taffybar/Widget/Util.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      : System.Taffybar.Widget.Util
@@ -18,6 +19,7 @@
 import           Control.Concurrent ( forkIO )
 import           Control.Monad
 import           Control.Monad.IO.Class
+import           Data.Bifunctor ( first )
 import           Data.Functor ( ($>) )
 import           Data.Int
 import qualified Data.Text as T
@@ -155,11 +157,18 @@
   Gtk.setWidgetValign widget Gtk.AlignFill >>
   Gtk.setWidgetHalign widget Gtk.AlignCenter
 
-pixbufNewFromFileAtScaleByHeight :: Int32 -> String -> IO PB.Pixbuf
+pixbufNewFromFileAtScaleByHeight :: Int32 -> String -> IO (Either String PB.Pixbuf)
 pixbufNewFromFileAtScaleByHeight height name =
+  fmap (handleResult . first show) $ catchGErrorsAsLeft $
   PB.pixbufNewFromFileAtScale name (-1) height True
+  where
+#if MIN_VERSION_gi_gdkpixbuf(2,0,26)
+    handleResult = join . fmap (maybe (Left "gdk function returned NULL") Right)
+#else
+    handleResult = id
+#endif
 
-loadIcon :: Int32 -> String -> IO PB.Pixbuf
+loadIcon :: Int32 -> String -> IO (Either String PB.Pixbuf)
 loadIcon height name =
   ((</> "icons" </> name) <$> getDataDir) >>=
   pixbufNewFromFileAtScaleByHeight height
diff --git a/src/System/Taffybar/Widget/WttrIn.hs b/src/System/Taffybar/Widget/WttrIn.hs
--- a/src/System/Taffybar/Widget/WttrIn.hs
+++ b/src/System/Taffybar/Widget/WttrIn.hs
@@ -5,7 +5,7 @@
 -- Useful if NOAA data doesn't cover your needs, or if you just like wttr.in
 -- better. 
 --
--- For more information on how to use wttr.in, use:
+-- For more information on how to use wttr.in, see <https://wttr.in/:help>.
 
 module System.Taffybar.Widget.WttrIn ( textWttrNew ) where
 import System.Log.Logger
diff --git a/taffybar.cabal b/taffybar.cabal
--- a/taffybar.cabal
+++ b/taffybar.cabal
@@ -1,5 +1,5 @@
 name: taffybar
-version: 3.2.3
+version: 3.2.4
 synopsis: A desktop bar similar to xmobar, but with more GUI
 license: BSD3
 license-file: LICENSE
