diff --git a/animate-preview.cabal b/animate-preview.cabal
--- a/animate-preview.cabal
+++ b/animate-preview.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: d281150d9eebb095fef2834614d992a4ba12c50bb239a3bdf134c42c9cedfa6a
+-- hash: aa201f0c9dbeb2140758863090833a644118964bae6977db1aa98f91d4b55dc4
 
 name:           animate-preview
-version:        0.1.2.3
+version:        0.1.2.4
 synopsis:       Preview tool for sprite animation
 description:    Preview tool for sprite animation
 category:       Game
diff --git a/library/Animate/Preview.hs b/library/Animate/Preview.hs
--- a/library/Animate/Preview.hs
+++ b/library/Animate/Preview.hs
@@ -8,17 +8,15 @@
 import qualified SDL
 import qualified SDL.Font as Font
 import SDL.FPS (FPS)
+import Control.Monad (forM_, when)
 import Control.Monad.IO.Class (MonadIO(..))
 import Control.Monad.Reader (MonadReader, ReaderT, runReaderT)
 import Control.Monad.State (MonadState, StateT, evalStateT)
-import Control.Monad (when, forever, void)
-import Control.Concurrent (threadDelay, forkIO, newMVar, modifyMVar_)
+import Control.Concurrent (newMVar)
 import Control.Exception.Safe (MonadThrow, MonadCatch)
 import Data.Maybe (fromMaybe)
 import Data.StateVar (get)
 import Options.Generic
-import System.FSNotify (withManager, watchDir, eventPath)
-import System.FilePath (takeDirectory, takeFileName)
 
 import Animate.Preview.Config
 import Animate.Preview.Logger
@@ -87,9 +85,7 @@
 
   when (unHelpful $ watch options) $ do
     runWatcherAndReloader cfg (sTarget settings)
-    case sSpritesheet settings of
-      Nothing -> return ()
-      Just imgPath -> runWatcherAndReloader cfg imgPath
+    forM_ (sSpritesheet settings) (runWatcherAndReloader cfg)
   
   let v = initVars winSize drawSize
   runAnimatePreview cfg v (reload >> mainLoop)
diff --git a/library/Animate/Preview/Renderer.hs b/library/Animate/Preview/Renderer.hs
--- a/library/Animate/Preview/Renderer.hs
+++ b/library/Animate/Preview/Renderer.hs
@@ -4,17 +4,15 @@
 import qualified SDL
 import qualified SDL.Primitive as Gfx
 import qualified Data.Map as Map
-import Foreign.C.Types
 import SDL.Vect
 import Control.Monad.Reader (asks)
 import Control.Monad.State (modify)
 import Control.Monad.IO.Class (MonadIO(..))
 import Data.Maybe (fromMaybe)
-import Data.StateVar (($=))
-import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(..), CInt)
 import Data.Text (Text)
 import Data.Text.Conversions (fromText)
-import Data.StateVar (get)
+import Data.StateVar (get, ($=))
 import Data.List (foldl')
 
 import Animate.Preview.Config
diff --git a/library/Animate/Preview/Resource.hs b/library/Animate/Preview/Resource.hs
--- a/library/Animate/Preview/Resource.hs
+++ b/library/Animate/Preview/Resource.hs
@@ -7,7 +7,6 @@
 import qualified SDL.Raw.Video as Raw
 import qualified SDL.Internal.Numbered as Numbered
 import qualified Data.Map as Map
-import Control.Monad (filterM)
 import Data.Text (Text)
 import Data.Maybe (catMaybes)
 import Data.StateVar (($=))
diff --git a/library/Animate/Preview/Scalar.hs b/library/Animate/Preview/Scalar.hs
--- a/library/Animate/Preview/Scalar.hs
+++ b/library/Animate/Preview/Scalar.hs
@@ -21,14 +21,16 @@
 scalarToSpriteScale :: Scalar -> Float
 scalarToSpriteScale = \case
   Scalar'None -> 1
-  Scalar'Down n -> 1 - (0.1 * fromIntegral n)
+  Scalar'Down n -> 1 - (0.05 * fromIntegral n)
   Scalar'Up n -> 1 + (0.1 * fromIntegral n)
 
 asScaleString :: Scalar -> String
 asScaleString = \case
   Scalar'None -> "1x"
-  Scalar'Down n -> "0." ++ show (10 - n) ++ "x"
+  Scalar'Down n -> "0." ++ showDown (100 - (n * 5)) ++ "x"
   Scalar'Up n -> show (n `div` 10 + 1) ++ "." ++ show (mod n 10) ++ "x"
+  where
+    showDown n = (if n < 10 then "0" else "") ++ show n
 
 incrementScalar :: Int -> Scalar -> Scalar
 incrementScalar upper = \case
diff --git a/library/Animate/Preview/Scene.hs b/library/Animate/Preview/Scene.hs
--- a/library/Animate/Preview/Scene.hs
+++ b/library/Animate/Preview/Scene.hs
@@ -183,7 +183,7 @@
   let down = onceThenFire (iScaleDown input) || iScaleMouseDown input > 0
   let reset = isPressed (iScaleReset input) || isPressed (iMouseMiddleClick input)
   let increment = replicate (max 1 (iScaleMouseUp input)) (incrementScalar 90)
-  let decrement = replicate (max 1 (iScaleMouseDown input)) (decrementScalar 9)
+  let decrement = replicate (max 1 (iScaleMouseDown input)) (decrementScalar 19)
   let change s
         | reset = Scalar'None
         | up && not down = fapply increment s
diff --git a/library/Animate/Preview/Watcher.hs b/library/Animate/Preview/Watcher.hs
--- a/library/Animate/Preview/Watcher.hs
+++ b/library/Animate/Preview/Watcher.hs
@@ -4,17 +4,13 @@
 import Control.Monad.IO.Class (MonadIO(..))
 import Control.Monad.Reader (MonadReader, ReaderT, runReaderT)
 import Animate.Preview.Config
-import Control.Monad (when, forever, void)
-import Control.Concurrent (threadDelay, forkIO, newMVar, modifyMVar_)
-import Control.Exception.Safe (MonadThrow, MonadCatch)
-import Data.Maybe (fromMaybe)
-import Data.StateVar (get)
+import Control.Monad (forever, void)
+import Control.Concurrent (threadDelay, forkIO, modifyMVar_)
 import System.FSNotify (withManager, watchDir, eventPath)
 import System.FilePath (takeDirectory, takeFileName)
 
 import Animate.Preview.Loader
 import Animate.Preview.Logger
-import Animate.Preview.Scene
 
 newtype Watcher a = Watcher (ReaderT Config IO a)
   deriving (Functor, Applicative, Monad, MonadReader Config, MonadIO, MonadThrow, MonadCatch)
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: animate-preview
-version: '0.1.2.3'
+version: '0.1.2.4'
 github: jxv/animate-preview
 license: BSD3
 category: Game
