diff --git a/lclayout/standalone.py b/lclayout/standalone.py
index 875f7c58c1b6406f692e1d69988a3e72abf56226..6502f832ce2c345fe5684ab310840f085005aac6 100644
--- a/lclayout/standalone.py
+++ b/lclayout/standalone.py
@@ -290,15 +290,17 @@ class LcLayout:
                     via_layer=via_layers[tech.power_layer[i]][tech.power_layer[i+1]]['layer']
                     via_size=self.tech.via_size[via_layer]
                     via_spacing=self.tech.min_spacing[via_layer,via_layer]
-                    x1=self._cell_width//2;
-                    w=via_size//2;
-                    num=(x1-via_size-via_spacing)//(via_size+via_spacing)
+                    x1=tech.unit_cell_width//2 # self._cell_width//2
+                    logger.debug('unit_cell_width: {} cell_width: {} x1:{} range:{}'.format(tech.unit_cell_width, self._cell_width, x1,(self._cell_width//tech.unit_cell_width)-1))
+                    w=via_size//2
+                    num=((x1-via_size-via_spacing)//(via_size+via_spacing))
                     logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1))
                     for xoff in range(-num,num+1):
-                        x=x1+xoff*(via_size+via_spacing)
-                        viar = pya.Box(pya.Point(x - w, y1 - w),pya.Point(x + w, y1 + w))
-                        logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{} x:{} viar:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1,x,viar))
-                        self.shapes[via_layer].insert(viar).set_property('net', self.SUPPLY_VOLTAGE_NET if y1>0 else self.GND_NET)
+                        for cellpart in range(0,(self._cell_width//tech.unit_cell_width)):
+                            x=x1+xoff*(via_size+via_spacing)+cellpart*tech.unit_cell_width
+                            viar = pya.Box(pya.Point(x - w, y1 - w),pya.Point(x + w, y1 + w))
+                            logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{} x:{} viar:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1,x,viar))
+                            self.shapes[via_layer].insert(viar).set_property('net', self.SUPPLY_VOLTAGE_NET if y1>0 else self.GND_NET)