diff --git a/b2sbackglassserverexe/b2sbackglassserverexe/Forms/formBackglass.vb b/b2sbackglassserverexe/b2sbackglassserverexe/Forms/formBackglass.vb
index 279a9e7..6714437 100644
--- a/b2sbackglassserverexe/b2sbackglassserverexe/Forms/formBackglass.vb
+++ b/b2sbackglassserverexe/b2sbackglassserverexe/Forms/formBackglass.vb
@@ -1916,6 +1916,8 @@ Public Class formBackglass
                         Dim loc As Point = New Point(CInt(innerNode.Attributes("LocX").InnerText), CInt(innerNode.Attributes("LocY").InnerText))
                         Dim size As Size = New Size(CInt(innerNode.Attributes("Width").InnerText), CInt(innerNode.Attributes("Height").InnerText))
                         Dim image As Image = Base64ToImage(innerNode.Attributes("Image").InnerText)
+                        image = CropImageToTransparency(image, loc, size)
+
                         Dim offimage As Image = Nothing
                         If innerNode.Attributes("OffImage") IsNot Nothing Then
                             offimage = Base64ToImage(innerNode.Attributes("OffImage").InnerText)
@@ -3158,7 +3160,70 @@ Public Class formBackglass
             End If
         End If
     End Sub
+    Public Function GetBoundingRectangle(image As Bitmap) As Rectangle
+        Dim rect As New Rectangle(0, 0, image.Width, image.Height)
+        Dim bmpData As Imaging.BitmapData = image.LockBits(rect, Imaging.ImageLockMode.ReadOnly, Imaging.PixelFormat.Format32bppArgb)
+
+        Dim stride As Integer = bmpData.Stride
+        Dim scan0 As IntPtr = bmpData.Scan0
+
+        Dim minX As Integer = image.Width
+        Dim minY As Integer = image.Height
+        Dim maxX As Integer = 0
+        Dim maxY As Integer = 0
+
+        Dim foundNonTransparent As Boolean = False
+
+        Dim pixels(image.Height * stride - 1) As Byte
+        System.Runtime.InteropServices.Marshal.Copy(scan0, pixels, 0, pixels.Length)
+
+        For y As Integer = 0 To image.Height - 1
+            For x As Integer = 0 To image.Width - 1
+                Dim index As Integer = (y * stride) + (x * 4) ' 4 bytes per pixel (32bpp)
+                Dim alpha As Byte = pixels(index + 3)
+
+                If alpha <> 0 Then
+                    foundNonTransparent = True
+                    If x < minX Then minX = x
+                    If y < minY Then minY = y
+                    If x > maxX Then maxX = x
+                    If y > maxY Then maxY = y
+                End If
+            Next
+        Next
+
+        image.UnlockBits(bmpData)
+
+        If Not foundNonTransparent Then
+            ' No non-transparent pixels found
+            Return Rectangle.Empty
+        End If
+
+        Return New Rectangle(minX, minY, maxX - minX + 1, maxY - minY + 1)
+    End Function
 
+    Public Function CropImageToTransparency(image As Image, ByRef loc As Point, ByRef size As Size) As Image
+        Dim bitmap As Bitmap = CType(image, Bitmap)
+        Dim boundingRect As Rectangle = GetBoundingRectangle(bitmap)
+
+        If boundingRect = Rectangle.Empty Then
+            ' Return an empty image or the original image as needed
+            Return image
+        End If
+
+        Dim croppedImage As New Bitmap(boundingRect.Width, boundingRect.Height)
+
+        Using g As Graphics = Graphics.FromImage(croppedImage)
+            g.DrawImage(bitmap, New Rectangle(0, 0, boundingRect.Width, boundingRect.Height), boundingRect, GraphicsUnit.Pixel)
+        End Using
+
+        ' Update loc and size based on the new dimensions
+        Dim sizeOrg As Size = size
+        size = New Size(CInt(size.Width * (boundingRect.Width / image.Width)), CInt(size.Height * (boundingRect.Height / image.Height)))
+        loc = New Point(loc.X + boundingRect.X, loc.Y + boundingRect.Y)
+
+        Return croppedImage
+    End Function
     Private Function ImageToBase64(image As Image) As String
         If image IsNot Nothing Then
             With New System.Drawing.ImageConverter