 {
   tft.setTextSize( 2 );
   tft.setTextColor( ILI9341_YELLOW, color );
-  if ( color )
-  {
-    tft.fillRect( button.x, button.y, button.w, button.h, color );
-  }
-  if ( bordercolor )
-  {
-    tft.drawRect( button.x, button.y, button.w, button.h, bordercolor );
-  }
+
+  if ( color || bordercolor )
+  {
+    tft.startWrite();
+    if ( color )
+    {
+      tft.writeFillRect( button.x, button.y, button.w, button.h, color );
+    }
+    if ( bordercolor )
+    {
+      tft.writeFastHLine( button.x, button.y, button.w, bordercolor );
+      tft.writeFastHLine( button.x, button.y + button.h, button.w, bordercolor );
+      tft.writeFastVLine( button.x, button.y, button.h, bordercolor );
+      tft.writeFastVLine( button.x + button.w, button.y, button.h, bordercolor );
+    }
+    tft.endWrite();
+  }
+
   int16_t x, y;
   uint16_t w, h;
   tft.getTextBounds( button.text, 0, 0, &x, &y, &w, &h);

  snprintf( TFT_NETWORK_AREA.text, sizeof( TFT_NETWORK_AREA.text ), "%s", ip4addr_ntoa( &ip_info.ip ) );
  drawButton( TFT_NETWORK_AREA, 0, 0 );


  if ( touch.touched() )
  {
    TS_Point p = touch.getPoint();
    if ( buttonPressed( MENU_BUTTON , p ) )
    {
      tftState = menu;
      tftClearScreen = true;

  tft.writeFillRect( sliderArea.x, sliderArea.y, sliderArea.w, sliderArea.h, ILI9341_BLACK);
  tft.writeFillRect( SLIDER_XPOS - 2, SLIDER_YPOS, 4, SLIDER_HEIGHT, ILI9341_YELLOW );
  tft.endWrite();

  //drawButton( sliderArea, 0, ILI9341_GREEN ); //debug

