diff --git a/src/app.rs b/src/app.rs
index 8033d227..4d536262 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -17,10 +17,12 @@ const MAX_SEARCH_LENGTH: usize = 200;
 #[derive(Debug, Clone, Copy)]
 pub enum WidgetPosition {
     Cpu,
+    CpuLegend,
     Mem,
     Disk,
     Temp,
     Network,
+    NetworkLegend,
     Process,
     ProcessSearch,
     BasicCpu,
@@ -34,19 +36,28 @@ impl WidgetPosition {
             WidgetPosition::Disk
             | WidgetPosition::Process
             | WidgetPosition::ProcessSearch
-            | WidgetPosition::Temp => true,
+            | WidgetPosition::Temp
+            | WidgetPosition::CpuLegend => true,
+            _ => false,
+        }
+    }
+
+    pub fn is_widget_graph(self) -> bool {
+        match self {
+            WidgetPosition::Cpu | WidgetPosition::Network | WidgetPosition::Mem => true,
             _ => false,
         }
     }
 
     pub fn get_pretty_name(self) -> String {
+        use WidgetPosition::*;
         match self {
-            WidgetPosition::Cpu | WidgetPosition::BasicCpu => "CPU",
-            WidgetPosition::Mem | WidgetPosition::BasicMem => "Memory",
-            WidgetPosition::Disk => "Disks",
-            WidgetPosition::Temp => "Temperature",
-            WidgetPosition::Network | WidgetPosition::BasicNet => "Network",
-            WidgetPosition::Process | WidgetPosition::ProcessSearch => "Processes",
+            Cpu | BasicCpu | CpuLegend => "CPU",
+            Mem | BasicMem => "Memory",
+            Disk => "Disks",
+            Temp => "Temperature",
+            Network | BasicNet | NetworkLegend => "Network",
+            Process | ProcessSearch => "Processes",
         }
         .to_string()
     }
@@ -375,10 +386,7 @@ impl App {
             self.dd_err = None;
         } else if self.is_filtering_or_searching() {
             match self.current_widget_selected {
-                WidgetPosition::Cpu
-                    if self.is_expanded && self.app_config_fields.use_basic_mode =>
-                {
-                    self.current_widget_selected = WidgetPosition::BasicCpu;
+                WidgetPosition::Cpu | WidgetPosition::CpuLegend => {
                     self.cpu_state.is_showing_tray = false;
                 }
                 WidgetPosition::Process | WidgetPosition::ProcessSearch => {
@@ -387,9 +395,6 @@ impl App {
                         self.process_search_state.search_state.is_enabled = false;
                     }
                 }
-                WidgetPosition::Cpu => {
-                    self.cpu_state.is_showing_tray = false;
-                }
                 WidgetPosition::Mem => {
                     self.mem_state.is_showing_tray = false;
                 }
@@ -401,14 +406,22 @@ impl App {
         } else if self.is_expanded {
             self.is_expanded = false;
             self.is_resized = true;
+            if self.app_config_fields.use_basic_mode {
+                self.current_widget_selected = match self.current_widget_selected {
+                    WidgetPosition::Cpu | WidgetPosition::CpuLegend => WidgetPosition::BasicCpu,
+                    WidgetPosition::Mem => WidgetPosition::BasicMem,
+                    WidgetPosition::Network => WidgetPosition::BasicNet,
+                    _ => self.current_widget_selected,
+                }
+            }
         }
     }
 
     fn is_filtering_or_searching(&self) -> bool {
         match self.current_widget_selected {
-            WidgetPosition::Cpu => self.cpu_state.is_showing_tray,
-            WidgetPosition::Mem => self.mem_state.is_showing_tray,
-            WidgetPosition::Network => self.net_state.is_showing_tray,
+            WidgetPosition::Cpu | WidgetPosition::CpuLegend => self.cpu_state.is_showing_tray,
+            // WidgetPosition::Mem => self.mem_state.is_showing_tray,
+            // WidgetPosition::Network => self.net_state.is_showing_tray,
             WidgetPosition::Process | WidgetPosition::ProcessSearch => {
                 self.process_search_state.search_state.is_enabled
             }
@@ -464,7 +477,7 @@ impl App {
 
     pub fn on_space(&mut self) {
         match self.current_widget_selected {
-            WidgetPosition::Cpu => {
+            WidgetPosition::CpuLegend => {
                 let curr_posn = self
                     .app_scroll_positions
                     .cpu_scroll_state
@@ -496,8 +509,9 @@ impl App {
                         self.search_with_name();
                     }
                 }
-                WidgetPosition::Cpu => {
+                WidgetPosition::Cpu | WidgetPosition::CpuLegend => {
                     self.cpu_state.is_showing_tray = true;
+                    self.current_widget_selected = WidgetPosition::CpuLegend
                 }
                 // WidgetPosition::Mem => {
                 // 	self.mem_state.is_showing_tray = true;
@@ -650,6 +664,15 @@ impl App {
                     self.is_resized = true;
                 }
             }
+
+            if self.app_config_fields.use_basic_mode {
+                self.current_widget_selected = match self.current_widget_selected {
+                    WidgetPosition::BasicCpu => WidgetPosition::Cpu,
+                    WidgetPosition::BasicMem => WidgetPosition::Mem,
+                    WidgetPosition::BasicNet => WidgetPosition::Network,
+                    _ => self.current_widget_selected,
+                }
+            }
         }
     }
 
@@ -1065,6 +1088,9 @@ impl App {
                     'K' => self.move_widget_selection_up(),
                     'J' => self.move_widget_selection_down(),
                     ' ' => self.on_space(),
+                    '+' => {}
+                    '-' => {}
+                    '=' => {}
                     _ => {}
                 }
 
@@ -1124,6 +1150,12 @@ impl App {
                 };
             } else {
                 self.current_widget_selected = match self.current_widget_selected {
+                    WidgetPosition::Cpu if self.app_config_fields.left_legend => {
+                        WidgetPosition::CpuLegend
+                    }
+                    WidgetPosition::CpuLegend if !self.app_config_fields.left_legend => {
+                        WidgetPosition::Cpu
+                    }
                     WidgetPosition::Process => WidgetPosition::Network,
                     WidgetPosition::ProcessSearch => WidgetPosition::Network,
                     WidgetPosition::Disk => WidgetPosition::Mem,
@@ -1131,6 +1163,16 @@ impl App {
                     _ => self.current_widget_selected,
                 };
             }
+        } else if self.is_expanded {
+            self.current_widget_selected = match self.current_widget_selected {
+                WidgetPosition::Cpu if self.app_config_fields.left_legend => {
+                    WidgetPosition::CpuLegend
+                }
+                WidgetPosition::CpuLegend if !self.app_config_fields.left_legend => {
+                    WidgetPosition::Cpu
+                }
+                _ => self.current_widget_selected,
+            }
         }
 
         self.reset_multi_tap_keys();
@@ -1149,11 +1191,27 @@ impl App {
                 };
             } else {
                 self.current_widget_selected = match self.current_widget_selected {
+                    WidgetPosition::Cpu if !self.app_config_fields.left_legend => {
+                        WidgetPosition::CpuLegend
+                    }
+                    WidgetPosition::CpuLegend if self.app_config_fields.left_legend => {
+                        WidgetPosition::Cpu
+                    }
                     WidgetPosition::Mem => WidgetPosition::Temp,
                     WidgetPosition::Network => WidgetPosition::Process,
                     _ => self.current_widget_selected,
                 };
             }
+        } else if self.is_expanded {
+            self.current_widget_selected = match self.current_widget_selected {
+                WidgetPosition::Cpu if !self.app_config_fields.left_legend => {
+                    WidgetPosition::CpuLegend
+                }
+                WidgetPosition::CpuLegend if self.app_config_fields.left_legend => {
+                    WidgetPosition::Cpu
+                }
+                _ => self.current_widget_selected,
+            }
         }
 
         self.reset_multi_tap_keys();
@@ -1213,7 +1271,7 @@ impl App {
                 };
             } else {
                 self.current_widget_selected = match self.current_widget_selected {
-                    WidgetPosition::Cpu => WidgetPosition::Mem,
+                    WidgetPosition::Cpu | WidgetPosition::CpuLegend => WidgetPosition::Mem,
                     WidgetPosition::Mem => WidgetPosition::Network,
                     WidgetPosition::Temp => WidgetPosition::Disk,
                     WidgetPosition::Disk => WidgetPosition::Process,
@@ -1261,7 +1319,7 @@ impl App {
                         .disk_scroll_state
                         .current_scroll_position = 0
                 }
-                WidgetPosition::Cpu => {
+                WidgetPosition::CpuLegend => {
                     self.app_scroll_positions
                         .cpu_scroll_state
                         .current_scroll_position = 0
@@ -1294,7 +1352,7 @@ impl App {
                         .disk_scroll_state
                         .current_scroll_position = self.canvas_data.disk_data.len() as u64 - 1
                 }
-                WidgetPosition::Cpu => {
+                WidgetPosition::CpuLegend => {
                     self.app_scroll_positions
                         .cpu_scroll_state
                         .current_scroll_position = self.canvas_data.cpu_data.len() as u64 - 1;
@@ -1312,7 +1370,7 @@ impl App {
                 WidgetPosition::Process => self.change_process_position(-1),
                 WidgetPosition::Temp => self.change_temp_position(-1),
                 WidgetPosition::Disk => self.change_disk_position(-1),
-                WidgetPosition::Cpu => self.change_cpu_table_position(-1), // TODO: [PO?] Temporary, may change if we add scaling
+                WidgetPosition::CpuLegend => self.change_cpu_table_position(-1), // TODO: [PO?] Temporary, may change if we add scaling
                 _ => {}
             }
             self.app_scroll_positions.scroll_direction = ScrollDirection::UP;
@@ -1326,7 +1384,7 @@ impl App {
                 WidgetPosition::Process => self.change_process_position(1),
                 WidgetPosition::Temp => self.change_temp_position(1),
                 WidgetPosition::Disk => self.change_disk_position(1),
-                WidgetPosition::Cpu => self.change_cpu_table_position(1), // TODO: [PO?] Temporary, may change if we add scaling
+                WidgetPosition::CpuLegend => self.change_cpu_table_position(1), // TODO: [PO?] Temporary, may change if we add scaling
                 _ => {}
             }
             self.app_scroll_positions.scroll_direction = ScrollDirection::DOWN;
@@ -1395,4 +1453,24 @@ impl App {
                 .current_scroll_position = (current_posn as i64 + num_to_change_by) as u64;
         }
     }
+
+    pub fn handle_scroll_up(&mut self) {
+        if self.current_widget_selected.is_widget_graph() {
+            self.zoom_in();
+        } else if self.current_widget_selected.is_widget_table() {
+            self.decrement_position_count();
+        }
+    }
+
+    pub fn handle_scroll_down(&mut self) {
+        if self.current_widget_selected.is_widget_graph() {
+            self.zoom_out();
+        } else if self.current_widget_selected.is_widget_table() {
+            self.increment_position_count();
+        }
+    }
+
+    fn zoom_out(&mut self) {}
+
+    fn zoom_in(&mut self) {}
 }
diff --git a/src/canvas.rs b/src/canvas.rs
index 80c1dd66..468ac70a 100644
--- a/src/canvas.rs
+++ b/src/canvas.rs
@@ -235,7 +235,7 @@ impl Painter {
                     .constraints([Constraint::Percentage(100)].as_ref())
                     .split(f.size());
                 match &app_state.current_widget_selected {
-                    WidgetPosition::Cpu | WidgetPosition::BasicCpu => {
+                    WidgetPosition::Cpu | WidgetPosition::BasicCpu | WidgetPosition::CpuLegend => {
                         let cpu_chunk = Layout::default()
                             .direction(Direction::Horizontal)
                             .margin(0)
@@ -272,7 +272,9 @@ impl Painter {
                     WidgetPosition::Temp => {
                         self.draw_temp_table(&mut f, app_state, rect[0], true);
                     }
-                    WidgetPosition::Network | WidgetPosition::BasicNet => {
+                    WidgetPosition::Network
+                    | WidgetPosition::BasicNet
+                    | WidgetPosition::NetworkLegend => {
                         self.draw_network_graph(&mut f, &app_state, rect[0]);
                     }
                     WidgetPosition::Process | WidgetPosition::ProcessSearch => {
diff --git a/src/canvas/widgets/cpu_graph.rs b/src/canvas/widgets/cpu_graph.rs
index 6a51595e..e9f4ddcf 100644
--- a/src/canvas/widgets/cpu_graph.rs
+++ b/src/canvas/widgets/cpu_graph.rs
@@ -17,7 +17,7 @@ use tui::{
     widgets::{Axis, Block, Borders, Chart, Dataset, Marker, Row, Table, Widget},
 };
 
-const CPU_SELECT_LEGEND_HEADER: [&str; 2] = ["CPU", "Show (Space)"];
+const CPU_SELECT_LEGEND_HEADER: [&str; 2] = ["CPU", "Show"];
 const CPU_LEGEND_HEADER: [&str; 2] = ["CPU", "Use%"];
 lazy_static! {
     static ref CPU_LEGEND_HEADER_LENS: Vec<usize> = CPU_LEGEND_HEADER
@@ -92,22 +92,22 @@ impl CpuGraphWidget for Painter {
             " CPU ".to_string()
         };
 
+        let border_style = match app_state.current_widget_selected {
+            WidgetPosition::Cpu => self.colours.highlighted_border_style,
+            _ => self.colours.border_style,
+        };
+
         Chart::default()
             .block(
                 Block::default()
                     .title(&title)
                     .title_style(if app_state.is_expanded {
-                        self.colours.highlighted_border_style
+                        border_style
                     } else {
                         self.colours.widget_title_style
                     })
                     .borders(Borders::ALL)
-                    .border_style(match app_state.current_widget_selected {
-                        WidgetPosition::Cpu | WidgetPosition::BasicCpu => {
-                            self.colours.highlighted_border_style
-                        }
-                        _ => self.colours.border_style,
-                    }),
+                    .border_style(border_style),
             )
             .x_axis(x_axis)
             .y_axis(y_axis)
@@ -167,7 +167,7 @@ impl CpuGraphWidget for Painter {
                 Row::StyledData(
                     cpu_string_row.iter(),
                     match app_state.current_widget_selected {
-                        WidgetPosition::Cpu => {
+                        WidgetPosition::CpuLegend => {
                             if itx as u64
                                 == app_state
                                     .app_scroll_positions
@@ -225,6 +225,11 @@ impl CpuGraphWidget for Painter {
             "".to_string()
         };
 
+        let title_and_border_style = match app_state.current_widget_selected {
+            WidgetPosition::CpuLegend => self.colours.highlighted_border_style,
+            _ => self.colours.border_style,
+        };
+
         // Draw
         Table::new(
             if app_state.cpu_state.is_showing_tray {
@@ -238,19 +243,9 @@ impl CpuGraphWidget for Painter {
         .block(
             Block::default()
                 .title(&title)
-                .title_style(if app_state.is_expanded {
-                    self.colours.highlighted_border_style
-                } else {
-                    match app_state.current_widget_selected {
-                        WidgetPosition::Cpu => self.colours.highlighted_border_style,
-                        _ => self.colours.border_style,
-                    }
-                })
+                .title_style(title_and_border_style)
                 .borders(Borders::ALL)
-                .border_style(match app_state.current_widget_selected {
-                    WidgetPosition::Cpu => self.colours.highlighted_border_style,
-                    _ => self.colours.border_style,
-                }),
+                .border_style(title_and_border_style),
         )
         .header_style(self.colours.table_header_style)
         .widths(
diff --git a/src/canvas/widgets/mem_graph.rs b/src/canvas/widgets/mem_graph.rs
index 77711ba5..f16f9e9e 100644
--- a/src/canvas/widgets/mem_graph.rs
+++ b/src/canvas/widgets/mem_graph.rs
@@ -79,9 +79,7 @@ impl MemGraphWidget for Painter {
                     })
                     .borders(Borders::ALL)
                     .border_style(match app_state.current_widget_selected {
-                        WidgetPosition::Mem | WidgetPosition::BasicMem => {
-                            self.colours.highlighted_border_style
-                        }
+                        WidgetPosition::Mem => self.colours.highlighted_border_style,
                         _ => self.colours.border_style,
                     }),
             )
diff --git a/src/canvas/widgets/network_graph.rs b/src/canvas/widgets/network_graph.rs
index b753ab76..50c829a7 100644
--- a/src/canvas/widgets/network_graph.rs
+++ b/src/canvas/widgets/network_graph.rs
@@ -71,9 +71,7 @@ impl NetworkGraphWidget for Painter {
                     })
                     .borders(Borders::ALL)
                     .border_style(match app_state.current_widget_selected {
-                        WidgetPosition::Network | WidgetPosition::BasicNet => {
-                            self.colours.highlighted_border_style
-                        }
+                        WidgetPosition::Network => self.colours.highlighted_border_style,
                         _ => self.colours.border_style,
                     }),
             )
diff --git a/src/main.rs b/src/main.rs
index f763e1ef..031a1d57 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -268,8 +268,8 @@ fn main() -> error::Result<()> {
 
 fn handle_mouse_event(event: MouseEvent, app: &mut App) {
     match event {
-        MouseEvent::ScrollUp(_x, _y, _modifiers) => app.decrement_position_count(),
-        MouseEvent::ScrollDown(_x, _y, _modifiers) => app.increment_position_count(),
+        MouseEvent::ScrollUp(_x, _y, _modifiers) => app.handle_scroll_up(),
+        MouseEvent::ScrollDown(_x, _y, _modifiers) => app.handle_scroll_down(),
         _ => {}
     };
 }