diff --git a/python/pcb.py b/python/pcb.py
index 83d471f48d47030c33d910fd62fba562a06c8a5b..b65e8ff04134c4e68b96d45283552226ed253c23 100755
--- a/python/pcb.py
+++ b/python/pcb.py
@@ -6653,7 +6653,7 @@ class PicoW(part):
 
 class XIAO_RP2040(part):
    #
-   # XIAO
+   # XIAO RP2040
    #
    def __init__(self,value=''):
       self.value = value
@@ -6661,12 +6661,11 @@ class XIAO_RP2040(part):
       self.labels = []
       padl = cube(-0.03,0.081,-0.070/2,0.070/2,0,0)
       padr = cube(-0.081,0.03,-0.070/2,0.070/2,0,0)
-      width = 0.713
-      length = 0.843
-      d = 0.015
       pitch = 0.1
-      offset = 0.08
       dx = 0.035
+      width = 0.699
+      length = 0.818
+      d = 0.015
       #
       # pin 1
       #
@@ -6755,77 +6754,75 @@ class XIAO_RP2040(part):
       # VIN
       #
       self.shape = add(self.shape,cube(
-         -width/2+0.287-d,
-         -width/2+0.287+0.040+d,
-         -length/2+0.033-d,
-         -length/2+0.033+0.086+d,
+         width/2-.418-d,
+         width/2-.376+d,
+         length/2-.798-d,
+         length/2-.714+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.287+0.040/2,
-         -length/2+0.033+0.086/2,
+         width/2-.376-(.418-.376)/2,
+         length/2-.714-(.798-.714)/2,
          0))
       self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VIN'))
       #
       # GND
       #
       self.shape = add(self.shape,cube(
-         -width/2+0.287+0.040+0.062-d,
-         -width/2+0.287+0.040+0.062+0.040+d,
-         -length/2+0.033-d,
-         -length/2+0.033+0.086+d,
+         width/2-.317-d,
+         width/2-.275+d,
+         length/2-.798-d,
+         length/2-.714+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.287+0.040+0.062+0.040/2,
-         -length/2+0.033+0.086/2,
+         width/2-.275-(.317-.275)/2,
+         length/2-.714-(.798-.714)/2,
          0))
       self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
       #
       # prog
       #
       self.shape = add(self.shape,cube(
-         -width/2+0.288-d,
-         -width/2+0.288+0.045+d,
-         length/2-0.058-0.045-d,
-         length/2-0.058+d,
+         width/2-.320-d,
+         width/2-.276+d,
+         length/2-.107-d,
+         length/2-.060+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.288+0.045/2,
-         length/2-0.058-0.045/2,
+         width/2-.276-(.320-.276)/2,
+         length/2-.060-(.107-.060)/2,
          0))
-      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DIO'))
+      #
       self.shape = add(self.shape,cube(
-         -width/2+0.288+0.045+0.057-d,
-         -width/2+0.288+0.045+0.057+0.045+d,
-         length/2-0.058-0.045-d,
-         length/2-0.058+d,
+         width/2-.424-d,
+         width/2-.376+d,
+         length/2-.107-d,
+         length/2-.060+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.288+0.045+0.057+0.045/2,
-         length/2-0.058-0.045/2,
+         width/2-.376-(.424-.376)/2,
+         length/2-.060-(.107-.060)/2,
          0))
-      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CLK'))
       self.shape = add(self.shape,cube(
-         -width/2+0.288-d,
-         -width/2+0.288+0.045+d,
-         length/2-0.058-0.045-0.058-0.045-d,
-         length/2-0.058-0.045-0.058+d,
+         width/2-.424-d,
+         width/2-.376+d,
+         length/2-.209-d,
+         length/2-.161+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.288+0.045/2,
-         length/2-0.058-0.045-0.058-0.045/2,
+         width/2-.376-(.424-.376)/2,
+         length/2-.161-(.209-.161)/2,
          0))
-      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RST'))
+      #
       self.shape = add(self.shape,cube(
-         -width/2+0.288+0.045+0.057-d,
-         -width/2+0.288+0.045+0.057+0.045+d,
-         length/2-0.058-0.045-0.058-0.045-d,
-         length/2-0.058-0.045-0.058+d,
+         width/2-.320-d,
+         width/2-.276+d,
+         length/2-.209-d,
+         length/2-.161+d,
          0,0))
       self.pad.append(point(
-         -width/2+0.288+0.045+0.057+0.045/2,
-         length/2-0.058-0.045-0.058-0.045/2,
+         width/2-.276-(.320-.276)/2,
+         length/2-.161-(.209-.161)/2,
          0))
-      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
 
 class XIAO(part):
    #