diff --git a/src/components/ui/IconButton.tsx b/src/components/ui/IconButton.tsx
index 207332a78b37aeeda1717a0ce9a206a2ea75901c..9c11b92c0ae4536f29500809f03ee683715804ce 100644
--- a/src/components/ui/IconButton.tsx
+++ b/src/components/ui/IconButton.tsx
@@ -1,6 +1,7 @@
 import styled, { css } from "styled-components";
 
 interface Props {
+    rotate?: string;
     type?: "default" | "circle";
 }
 
@@ -22,6 +23,10 @@ export default styled.div<Props>`
         color: ${normal};
     }
 
+    svg {
+        transition: 0.2s ease transform;
+    }
+
     &:hover {
         fill: ${hover};
         color: ${hover};
@@ -43,4 +48,10 @@ export default styled.div<Props>`
                 background-color: var(--primary-header);
             }
         `}
+
+    ${(props) => props.rotate && css`
+        svg {
+            transform: rotateZ(${props.rotate});
+        }
+    ` }
 `;
diff --git a/src/context/revoltjs/FileUploads.tsx b/src/context/revoltjs/FileUploads.tsx
index 1aba0317e0363298bf121ca335ac046d1f2cc83e..83cf8a4a4aa16a541964da5cf4ebd8250fe1723d 100644
--- a/src/context/revoltjs/FileUploads.tsx
+++ b/src/context/revoltjs/FileUploads.tsx
@@ -276,14 +276,9 @@ export function FileUploader(props: Props) {
                     if (uploading) return cancel();
                     if (attached) return remove();
                     onClick();
-                }}>
-                {uploading ? (
-                    <XCircle size={size} />
-                ) : attached ? (
-                    <X size={size} />
-                ) : (
-                    <Plus size={size} />
-                )}
+                }}
+                rotate={uploading || attached ? '45deg' : undefined}>
+                <Plus size={size} />
             </IconButton>
         );
     }