diff --git a/frontend/src/metabase/query_builder/components/VisualizationResult.jsx b/frontend/src/metabase/query_builder/components/VisualizationResult.jsx
index a1c1c2ed5c1059f4d8e8a542cc24ddbe3fb32e65..ba4cb4f1a6c79aff44f9223472619e9b95ae07c8 100644
--- a/frontend/src/metabase/query_builder/components/VisualizationResult.jsx
+++ b/frontend/src/metabase/query_builder/components/VisualizationResult.jsx
@@ -105,6 +105,7 @@ export default class VisualizationResult extends Component {
           rawSeries={rawSeries}
           onChangeCardAndRun={navigateToNewCardInsideQB}
           isEditing={true}
+          isQueryBuilder={true}
           showTitle={false}
           metadata={question.metadata()}
           onOpenChartSettings={this.props.onOpenChartSettings}
diff --git a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
index 8d12a0c5c2c0539e7eeb61ba9b55d0af0781bebd..563ad39de5b59326b962d711793ee91b033a4ee9 100644
--- a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
+++ b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
@@ -358,6 +358,8 @@ export default class LineAreaBarChart extends Component {
       hovered,
       headerIcon,
       actionButtons,
+      isFullscreen,
+      isQueryBuilder,
       onHoverChange,
       onAddSeries,
       onRemoveSeries,
@@ -381,6 +383,7 @@ export default class LineAreaBarChart extends Component {
           this.getHoverClasses(),
           this.props.className,
         )}
+        isQueryBuilder={isQueryBuilder}
       >
         {hasTitle && (
           <ChartLegendCaption
@@ -397,6 +400,8 @@ export default class LineAreaBarChart extends Component {
           hovered={hovered}
           hasLegend={hasLegend}
           actionButtons={!hasTitle ? actionButtons : undefined}
+          isFullscreen={isFullscreen}
+          isQueryBuilder={isQueryBuilder}
           onHoverChange={onHoverChange}
           onAddSeries={!hasBreakout ? onAddSeries : undefined}
           onRemoveSeries={!hasBreakout ? onRemoveSeries : undefined}
diff --git a/frontend/src/metabase/visualizations/components/LineAreaBarChart.styled.jsx b/frontend/src/metabase/visualizations/components/LineAreaBarChart.styled.jsx
index 715ba97822f56ebcc83a3551a53f75d68364e4ce..ab55ed7a6364006e804d7813a89a0bc31c09e429 100644
--- a/frontend/src/metabase/visualizations/components/LineAreaBarChart.styled.jsx
+++ b/frontend/src/metabase/visualizations/components/LineAreaBarChart.styled.jsx
@@ -4,7 +4,8 @@ import LegendCaption from "./legend/LegendCaption";
 export const LineAreaBarChartRoot = styled.div`
   display: flex;
   flex-direction: column;
-  padding: 0.5rem 1rem;
+  padding: ${({ isQueryBuilder }) =>
+    isQueryBuilder ? "1rem 1rem 1rem 2rem" : "0.5rem 1rem"};
   overflow: hidden;
 `;
 
diff --git a/frontend/src/metabase/visualizations/components/Visualization.jsx b/frontend/src/metabase/visualizations/components/Visualization.jsx
index e87baeea71e395fb3161aa03d28f834a4c118aef..ef75b79850d8636fcd620c6fa05cf9449b69f239 100644
--- a/frontend/src/metabase/visualizations/components/Visualization.jsx
+++ b/frontend/src/metabase/visualizations/components/Visualization.jsx
@@ -63,6 +63,7 @@ type Props = {
   isDashboard: boolean,
   isEditing: boolean,
   isSettings: boolean,
+  isQueryBuilder: boolean,
 
   headerIcon?: {
     name: string,
@@ -161,6 +162,7 @@ export default class Visualization extends React.PureComponent {
     isDashboard: false,
     isEditing: false,
     isSettings: false,
+    isQueryBuilder: false,
     onUpdateVisualizationSettings: () => {},
     // prefer passing in a function that doesn't cause the application to reload
     onChangeLocation: location => {
diff --git a/frontend/src/metabase/visualizations/components/legend/Legend.styled.jsx b/frontend/src/metabase/visualizations/components/legend/Legend.styled.jsx
index 859507b5564000dc44c1b4578761f8e291c699d4..149267a179ac7e5baa90efaaf7cd08bc91d071cb 100644
--- a/frontend/src/metabase/visualizations/components/legend/Legend.styled.jsx
+++ b/frontend/src/metabase/visualizations/components/legend/Legend.styled.jsx
@@ -4,6 +4,7 @@ import colors, { darken } from "metabase/lib/colors";
 export const LegendRoot = styled.div`
   display: flex;
   flex-direction: ${({ isVertical }) => (isVertical ? "column" : "row")};
+  overflow: ${({ isVertical }) => (isVertical ? "" : "hidden")};
 `;
 
 export const LegendLink = styled.div`
diff --git a/frontend/src/metabase/visualizations/components/legend/LegendCaption.jsx b/frontend/src/metabase/visualizations/components/legend/LegendCaption.jsx
index c54c32f8682f5253937de60de586596cc6751e38..215f247290f1dcd244a7aaf0375e4cbe8734bebf 100644
--- a/frontend/src/metabase/visualizations/components/legend/LegendCaption.jsx
+++ b/frontend/src/metabase/visualizations/components/legend/LegendCaption.jsx
@@ -31,7 +31,10 @@ const LegendCaption = ({
   return (
     <LegendCaptionRoot className={className} data-testid="legend-caption">
       {icon && <LegendLabelIcon {...icon} />}
-      <LegendLabel onClick={onSelectTitle}>
+      <LegendLabel
+        className="fullscreen-normal-text fullscreen-night-text"
+        onClick={onSelectTitle}
+      >
         <Ellipsified>{title}</Ellipsified>
       </LegendLabel>
       {description && (
diff --git a/frontend/src/metabase/visualizations/components/legend/LegendItem.jsx b/frontend/src/metabase/visualizations/components/legend/LegendItem.jsx
index abd52a44e580a2af4c1a709c4180d3a238109e9e..d88b4f64451437e8f52d4fedff5c691c44d1b25b 100644
--- a/frontend/src/metabase/visualizations/components/legend/LegendItem.jsx
+++ b/frontend/src/metabase/visualizations/components/legend/LegendItem.jsx
@@ -55,7 +55,7 @@ const LegendItem = ({
         onMouseLeave={onHoverChange && handleItemMouseLeave}
       >
         <LegendItemDot color={color} />
-        <LegendItemTitle>
+        <LegendItemTitle className="fullscreen-normal-text fullscreen-night-text">
           <Ellipsified>{label}</Ellipsified>
         </LegendItemTitle>
       </LegendItemLabel>
diff --git a/frontend/src/metabase/visualizations/components/legend/LegendLayout.jsx b/frontend/src/metabase/visualizations/components/legend/LegendLayout.jsx
index 6570347532b691e71a5e4aa88bdc024f49001045..b04c60f2a9d968ab851d5151ca1240ff37914f8f 100644
--- a/frontend/src/metabase/visualizations/components/legend/LegendLayout.jsx
+++ b/frontend/src/metabase/visualizations/components/legend/LegendLayout.jsx
@@ -13,6 +13,7 @@ import {
 
 const MIN_ITEM_WIDTH = 100;
 const MIN_ITEM_HEIGHT = 25;
+const MIN_ITEM_HEIGHT_LARGE = 31;
 const MIN_LEGEND_WIDTH = 400;
 
 const propTypes = {
@@ -24,6 +25,8 @@ const propTypes = {
   height: PropTypes.number,
   hasLegend: PropTypes.bool,
   actionButtons: PropTypes.node,
+  isFullscreen: PropTypes.bool,
+  isQueryBuilder: PropTypes.bool,
   children: PropTypes.node,
   onHoverChange: PropTypes.func,
   onAddSeries: PropTypes.func,
@@ -40,14 +43,17 @@ const LegendLayout = ({
   height = 0,
   hasLegend,
   actionButtons,
+  isFullscreen,
+  isQueryBuilder,
   children,
   onHoverChange,
   onAddSeries,
   onSelectSeries,
   onRemoveSeries,
 }) => {
+  const itemHeight = !isFullscreen ? MIN_ITEM_HEIGHT : MIN_ITEM_HEIGHT_LARGE;
   const maxXItems = Math.floor(width / MIN_ITEM_WIDTH);
-  const maxYItems = Math.floor(height / MIN_ITEM_HEIGHT);
+  const maxYItems = Math.floor(height / itemHeight);
   const maxYLabels = Math.max(maxYItems - 1, 0);
   const minYLabels = labels.length > maxYItems ? maxYLabels : labels.length;
 
@@ -59,7 +65,10 @@ const LegendLayout = ({
   return (
     <LegendLayoutRoot className={className} isVertical={isVertical}>
       {isVisible && (
-        <LegendContainer isVertical={isVertical}>
+        <LegendContainer
+          isVertical={isVertical}
+          isQueryBuilder={isQueryBuilder}
+        >
           <Legend
             labels={labels}
             colors={colors}
diff --git a/frontend/src/metabase/visualizations/components/legend/LegendLayout.styled.jsx b/frontend/src/metabase/visualizations/components/legend/LegendLayout.styled.jsx
index 64e4448323c973cb163c7d9991efe0ca15845144..6d5a87fc982154fa0bb7c63db27fe790fa3e47c2 100644
--- a/frontend/src/metabase/visualizations/components/legend/LegendLayout.styled.jsx
+++ b/frontend/src/metabase/visualizations/components/legend/LegendLayout.styled.jsx
@@ -17,7 +17,8 @@ export const LegendContainer = styled.div`
   display: ${({ isVertical }) => (isVertical ? "block" : "flex")};
   max-width: ${({ isVertical }) => (isVertical ? "25%" : "")};
   max-width: ${({ isVertical }) => (isVertical ? "min(25%, 20rem)" : "")};
-  margin-right: ${({ isVertical }) => (isVertical ? "0.5rem" : "")};
+  margin-right: ${({ isVertical, isQueryBuilder }) =>
+    isVertical ? (isQueryBuilder ? "2.5rem" : "0.5rem") : ""};
   margin-bottom: ${({ isVertical }) => (isVertical ? "" : "0.5rem")};
 `;
 
diff --git a/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js b/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
index 58273f3a4abd4929930c79d7dc4320b67a422166..a1feb0b0822e8c8c082ea05a27c9d4719262c65e 100644
--- a/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
+++ b/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
@@ -52,9 +52,9 @@ describe("scenarios > visualizations > drillthroughs > chart drill", () => {
 
       // drag across to filter
       cy.get(".Visualization")
-        .trigger("mousedown", 100, 200)
-        .trigger("mousemove", 210, 200)
-        .trigger("mouseup", 210, 200);
+        .trigger("mousedown", 120, 200)
+        .trigger("mousemove", 230, 200)
+        .trigger("mouseup", 230, 200);
 
       // new filter applied
       // Note: Test was flaking because apparently mouseup doesn't always happen at the same position.