diff --git a/win2xcur/cursor.py b/win2xcur/cursor.py
index 2925153..70227fd 100644
--- a/win2xcur/cursor.py
+++ b/win2xcur/cursor.py
@@ -16,6 +16,8 @@ class CursorImage:
     def __repr__(self) -> str:
         return f'CursorImage(image={self.image!r}, hotspot={self.hotspot!r}, nominal={self.nominal!r})'
 
+    def clone(self):
+        return CursorImage(self.image.clone(), self.hotspot, self.nominal)
 
 class CursorFrame:
     images: List[CursorImage]
@@ -36,3 +38,6 @@ class CursorFrame:
 
     def __repr__(self) -> str:
         return f'CursorFrame(images={self.images!r}, delay={self.delay!r})'
+
+    def clone(self):
+        return CursorFrame([img.clone() for img in self.images], self.delay)
diff --git a/win2xcur/main/win2xcur.py b/win2xcur/main/win2xcur.py
index 211b0cb..2ff7264 100644
--- a/win2xcur/main/win2xcur.py
+++ b/win2xcur/main/win2xcur.py
@@ -32,8 +32,8 @@ def main() -> None:
                         help='y-offset of shadow (as fraction of height)')
     parser.add_argument('-c', '--shadow-color', default='#000000',
                         help='color of the shadow')
-    parser.add_argument('--scale', default=None, type=float,
-                        help='Scale the cursor by the specified factor.')
+    parser.add_argument('--scale', default=None, type=str,
+                        help='Scale the cursor by the specified factor. Multi-scale "[0.125.0.1875,0.25]"')
 
     args = parser.parse_args()
     print_lock = Lock()
@@ -49,7 +49,11 @@ def main() -> None:
                 traceback.print_exc()
         else:
             if args.scale:
-                scale.apply_to_frames(cursor.frames, scale=args.scale)
+                scales = eval(args.scale)
+                if isinstance(scales, (int, float)):
+                    scale.apply_to_frames(cursor.frames, scale=scales)
+                else:
+                    cursor.frames = scale.apply_to_frames_MS(cursor.frames, scales=scales)
             if args.shadow:
                 shadow.apply_to_frames(cursor.frames, color=args.shadow_color, radius=args.shadow_radius,
                                        sigma=args.shadow_sigma, xoffset=args.shadow_x, yoffset=args.shadow_y)
diff --git a/win2xcur/scale.py b/win2xcur/scale.py
index b25793e..95cf68c 100644
--- a/win2xcur/scale.py
+++ b/win2xcur/scale.py
@@ -8,5 +8,16 @@ def apply_to_frames(frames: List[CursorFrame], *, scale: float) -> None:
         for cursor in frame:
             cursor.image.scale(
                 int(round(cursor.image.width * scale)),
-                int(round(cursor.image.height) * scale),
+                int(round(cursor.image.height * scale)),
             )
+            cursor.nominal = int(cursor.nominal * scale)
+            hx, hy = cursor.hotspot
+            cursor.hotspot = (int(hx * scale), int(hy * scale))
+
+def apply_to_frames_MS(frames: List[CursorFrame], *, scales: List[float]) -> List[CursorFrame]:
+    frames_MS = []
+    for scale in scales:
+        frames_s = [frame.clone() for frame in frames]
+        apply_to_frames(frames_s, scale=scale)
+        frames_MS.extend(frames_s)
+    return frames_MS
\ No newline at end of file