diff --git a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp
index 6d642fd438..5f8748b034 100644
--- a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp
+++ b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp
@@ -794,11 +794,18 @@ void BOARD_ADAPTER::addShape( const PCB_TEXTBOX* aTextBox, CONTAINER_2D_BASE* aC
 void BOARD_ADAPTER::addTable( const PCB_TABLE* aTable, CONTAINER_2D_BASE* aContainer,
                               const BOARD_ITEM* aOwner )
 {
-    // JEY TODO: tables
-    // add borders
+    aTable->DrawBorders(
+            [&]( const VECTOR2I& ptA, const VECTOR2I& ptB, const STROKE_PARAMS& stroke )
+            {
+                addROUND_SEGMENT_2D( aContainer, TO_SFVEC2F( ptA ), TO_SFVEC2F( ptB ),
+                                     TO_3DU( stroke.GetWidth() ), *aOwner );
+            } );
 
     for( PCB_TABLECELL* cell : aTable->GetCells() )
-        addText( cell, aContainer, aOwner );
+    {
+        if( cell->GetColSpan() > 0 && cell->GetRowSpan() > 0 )
+            addText( cell, aContainer, aOwner );
+    }
 }
 
 
diff --git a/3d-viewer/3d_canvas/create_layer_items.cpp b/3d-viewer/3d_canvas/create_layer_items.cpp
index 3d3e9d6d08..9fcacd2f28 100644
--- a/3d-viewer/3d_canvas/create_layer_items.cpp
+++ b/3d-viewer/3d_canvas/create_layer_items.cpp
@@ -940,7 +940,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
                     break;
 
                 case PCB_TABLE_T:
-                    // JEY TODO: tables
+                    addTable( static_cast<PCB_TABLE*>( item ), layerContainer, item );
                     break;
 
                 case PCB_DIM_ALIGNED_T: