diff --git a/src/canvas.rs b/src/canvas.rs
index 1d16cf34..805d4c11 100644
--- a/src/canvas.rs
+++ b/src/canvas.rs
@@ -1559,78 +1559,75 @@ impl Painter {
         // the desired lengths.
 
         let num_cpus = cpu_data.len();
-        let remaining_height = (draw_loc.height - 2) as usize;
-        let required_columns = (num_cpus / remaining_height)
-            + (if num_cpus % remaining_height == 0 {
-                0
-            } else {
-                1
-            });
+        if draw_loc.height > 2 {
+            let remaining_height = (draw_loc.height - 2) as usize;
+            let required_columns = (num_cpus / remaining_height)
+                + (if num_cpus % remaining_height == 0 {
+                    0
+                } else {
+                    1
+                });
 
-        // debug!(
-        //     "Num cpus: {}, remaining height: {}, required columns: {}",
-        //     num_cpus, remaining_height, required_columns
-        // );
+            if required_columns > 0 {
+                let chunk_vec =
+                    vec![Constraint::Percentage((100 / required_columns) as u16); required_columns];
+                let chunks = Layout::default()
+                    .constraints(chunk_vec.as_ref())
+                    .direction(Direction::Horizontal)
+                    .margin(1)
+                    .split(draw_loc);
 
-        if required_columns > 0 {
-            let chunk_vec =
-                vec![Constraint::Percentage((100 / required_columns) as u16); required_columns];
-            let chunks = Layout::default()
-                .constraints(chunk_vec.as_ref())
-                .direction(Direction::Horizontal)
-                .margin(1)
-                .split(draw_loc);
+                let num_spaces = 3;
+                // +10 due to 4 + 4 + 2 columns for the name & space + percentage + bar bounds
+                let allowed_width = max(
+                    0,
+                    draw_loc.width as i64
+                        - 2
+                        - (num_spaces * (required_columns - 1) + 10 * required_columns) as i64,
+                ) as usize;
 
-            let num_spaces = 3;
-            // +9 due to 3 + 4 + 2 columns for the CPU name + percentage + bar bounds
-            let allowed_width = max(
-                0,
-                draw_loc.width as i64
-                    - 2
-                    - (num_spaces * (required_columns - 1) + 9 * required_columns) as i64,
-            ) as usize;
+                let bar_length = allowed_width / required_columns;
 
-            let bar_length = allowed_width / required_columns;
-
-            let cpu_bars = (0..num_cpus)
-                .map(|cpu_index| {
-                    let use_percentage =
-                        if let Some(cpu_usage) = cpu_data[cpu_index].cpu_data.last() {
-                            cpu_usage.1
-                        } else {
-                            0.0
-                        };
-
-                    let num_bars = calculate_basic_use_bars(use_percentage, bar_length);
-                    format!(
-                        "{:3}[{}{}{:3.0}%]\n",
-                        if cpu_index == 0 && app_state.app_config_fields.show_average_cpu {
-                            "AVG".to_string()
-                        } else {
-                            cpu_index.to_string()
-                        },
-                        "|".repeat(num_bars),
-                        " ".repeat(bar_length - num_bars),
-                        use_percentage.round(),
-                    )
-                })
-                .collect::<Vec<_>>();
-
-            for (current_row, chunk) in chunks.iter().enumerate() {
-                let start_index = (current_row * remaining_height) as usize;
-                let end_index = min(start_index + (draw_loc.height - 2) as usize, num_cpus);
-                let cpu_column: Vec<Text<'_>> = (start_index..end_index)
+                let cpu_bars = (0..num_cpus)
                     .map(|cpu_index| {
-                        Text::Styled(
-                            (&cpu_bars[cpu_index]).into(),
-                            self.colours.cpu_colour_styles
-                                [cpu_index as usize % self.colours.cpu_colour_styles.len()],
+                        let use_percentage =
+                            if let Some(cpu_usage) = cpu_data[cpu_index].cpu_data.last() {
+                                cpu_usage.1
+                            } else {
+                                0.0
+                            };
+
+                        let num_bars = calculate_basic_use_bars(use_percentage, bar_length);
+                        format!(
+                            "{:3} [{}{}{:3.0}%]\n",
+                            if cpu_index == 0 && app_state.app_config_fields.show_average_cpu {
+                                "AVG".to_string()
+                            } else {
+                                cpu_index.to_string()
+                            },
+                            "|".repeat(num_bars),
+                            " ".repeat(bar_length - num_bars),
+                            use_percentage.round(),
                         )
                     })
                     .collect::<Vec<_>>();
-                Paragraph::new(cpu_column.iter())
-                    .block(Block::default())
-                    .render(f, *chunk);
+
+                for (current_row, chunk) in chunks.iter().enumerate() {
+                    let start_index = (current_row * remaining_height) as usize;
+                    let end_index = min(start_index + (draw_loc.height - 2) as usize, num_cpus);
+                    let cpu_column: Vec<Text<'_>> = (start_index..end_index)
+                        .map(|cpu_index| {
+                            Text::Styled(
+                                (&cpu_bars[cpu_index]).into(),
+                                self.colours.cpu_colour_styles
+                                    [cpu_index as usize % self.colours.cpu_colour_styles.len()],
+                            )
+                        })
+                        .collect::<Vec<_>>();
+                    Paragraph::new(cpu_column.iter())
+                        .block(Block::default())
+                        .render(f, *chunk);
+                }
             }
         }
     }
@@ -1654,8 +1651,8 @@ impl Painter {
             .margin(1)
             .split(draw_loc);
 
-        // +9 due to 3 + 4 + 2 columns for the mem name + percentage + bar bounds
-        let bar_length = max(0, draw_loc.width as i64 - 2 - 9 as i64) as usize;
+        // +10 due to 4 + 4 + 2 columns for the name & space + percentage + bar bounds
+        let bar_length = max(0, draw_loc.width as i64 - 2 - 10 as i64) as usize;
         let ram_use_percentage = if let Some(mem) = mem_data.last() {
             mem.1
         } else {
@@ -1669,15 +1666,13 @@ impl Painter {
         let num_bars_ram = calculate_basic_use_bars(ram_use_percentage, bar_length);
         let num_bars_swap = calculate_basic_use_bars(swap_use_percentage, bar_length);
         let mem_label = format!(
-            "{:3}[{}{}{:3.0}%]\n",
-            "RAM",
+            "RAM [{}{}{:3.0}%]\n",
             "|".repeat(num_bars_ram),
             " ".repeat(bar_length - num_bars_ram),
             ram_use_percentage.round(),
         );
         let swap_label = format!(
-            "{:3}[{}{}{:3.0}%]\n",
-            "SWP",
+            "SWP [{}{}{:3.0}%]\n",
             "|".repeat(num_bars_swap),
             " ".repeat(bar_length - num_bars_swap),
             swap_use_percentage.round(),
@@ -1719,7 +1714,7 @@ impl Painter {
             .margin(1)
             .split(draw_loc);
 
-        // +9 due to 3 + 4 + 2 columns for the mem name + percentage + bar bounds
+        // +9 due to 3 + 4 + 2 columns for the name & space + percentage + bar bounds
         let bar_length = max(0, draw_loc.width as i64 - 2 - 9 as i64) as usize;
         let rx_use_percentage = if let Some(rx) = rx_data.last() {
             rx.1
@@ -1734,15 +1729,13 @@ impl Painter {
         let num_bars_rx = calculate_basic_use_bars(rx_use_percentage, bar_length);
         let num_bars_tx = calculate_basic_use_bars(tx_use_percentage, bar_length);
         let rx_label = format!(
-            "{:3}[{}{}{:3.0}%]\n",
-            "RX",
+            "RX [{}{}{:3.0}%]\n",
             "|".repeat(num_bars_rx),
             " ".repeat(bar_length - num_bars_rx),
             rx_use_percentage.round(),
         );
         let tx_label = format!(
-            "{:3}[{}{}{:3.0}%]\n",
-            "TX",
+            "TX [{}{}{:3.0}%]\n",
             "|".repeat(num_bars_tx),
             " ".repeat(bar_length - num_bars_tx),
             tx_use_percentage.round(),