diff --git a/include/wx/msw/setup.h b/include/wx/msw/setup.h
index b1d20d927..4f834c941 100644
--- a/include/wx/msw/setup.h
+++ b/include/wx/msw/setup.h
@@ -1648,7 +1648,7 @@
 #if defined(_MSC_VER) && _MSC_VER >= 1600
     #define wxUSE_GRAPHICS_DIRECT2D wxUSE_GRAPHICS_CONTEXT
 #else
-    #define wxUSE_GRAPHICS_DIRECT2D 0
+    #define wxUSE_GRAPHICS_DIRECT2D wxUSE_GRAPHICS_CONTEXT
 #endif
 
 // wxWebRequest backend based on WinHTTP.
diff --git a/src/generic/tipwin.cpp b/src/generic/tipwin.cpp
index f8ac37f5f..c95371d06 100644
--- a/src/generic/tipwin.cpp
+++ b/src/generic/tipwin.cpp
@@ -33,6 +33,10 @@
 #include "wx/display.h"
 #include "wx/vector.h"
 
+#if defined(WIN32)
+#include "wx/graphics.h"
+#endif // defined(WIN32)
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -298,15 +302,38 @@ void wxTipWindowView::OnPaint(wxPaintEvent& WXUNUSED(event))
     rect.width = size.x;
     rect.height = size.y;
 
-    // first filll the background
-    dc.SetBrush(wxBrush(GetBackgroundColour(), wxBRUSHSTYLE_SOLID));
-    dc.SetPen(wxPen(GetForegroundColour(), 1, wxPENSTYLE_SOLID));
-    dc.DrawRectangle(rect);
+#if defined(WIN32)
+    // Tooltips should be rendered with Direct2D if at all possible.
+    wxGraphicsRenderer* renderer = wxGraphicsRenderer::GetDirect2DRenderer();
+    wxGraphicsContext* context = nullptr;
+    if (renderer != nullptr)
+    {
+        context = renderer->CreateContextFromUnknownDC(dc);
+        if (context != nullptr)
+        {
+            // first fill the background
+            context->SetBrush(wxBrush(GetBackgroundColour(), wxBRUSHSTYLE_SOLID));
+            context->SetPen(wxPen(GetForegroundColour(), 1, wxPENSTYLE_SOLID));
+            context->DrawRectangle(0, 0, rect.width - 1, rect.height - 1);
 
-    // and then draw the text line by line
-    dc.SetTextBackground(GetBackgroundColour());
-    dc.SetTextForeground(GetForegroundColour());
-    dc.SetFont(GetFont());
+            // and then draw the text line by line
+            context->SetFont(GetFont(), GetForegroundColour());
+        }
+    }
+
+    if (context == nullptr)
+#endif // defined(WIN32)
+    {
+        // first filll the background
+        dc.SetBrush(wxBrush(GetBackgroundColour(), wxBRUSHSTYLE_SOLID));
+        dc.SetPen(wxPen(GetForegroundColour(), 1, wxPENSTYLE_SOLID));
+        dc.DrawRectangle(rect);
+
+        // and then draw the text line by line
+        dc.SetTextBackground(GetBackgroundColour());
+        dc.SetTextForeground(GetForegroundColour());
+        dc.SetFont(GetFont());
+    }
 
     wxPoint pt;
     pt.x = TEXT_MARGIN_X;
@@ -314,10 +341,26 @@ void wxTipWindowView::OnPaint(wxPaintEvent& WXUNUSED(event))
     const size_t count = m_textLines.size();
     for ( size_t n = 0; n < count; n++ )
     {
-        dc.DrawText(m_textLines[n], pt);
+#if defined(WIN32)
+        if (context != nullptr)
+        {
+            context->DrawText(m_textLines[n], pt.x, pt.y);
+        }
+        else
+#endif // defined(WIN32)
+        {
+            dc.DrawText(m_textLines[n], pt);
+        }
 
         pt.y += m_heightLine;
     }
+
+#if defined(WIN32)
+    if (context != nullptr)
+    {
+        delete context;
+    }
+#endif // defined(WIN32)
 }
 
 void wxTipWindowView::OnMouseClick(wxMouseEvent& WXUNUSED(event))
diff --git a/src/msw/graphicsd2d.cpp b/src/msw/graphicsd2d.cpp
index 89b74102a..e2a96a760 100644
--- a/src/msw/graphicsd2d.cpp
+++ b/src/msw/graphicsd2d.cpp
@@ -4767,7 +4767,8 @@ void wxD2DContext::DoDrawText(const wxString& str, wxDouble x, wxDouble y)
     GetRenderTarget()->DrawTextLayout(
         D2D1::Point2F(x, y),
         textLayout,
-        fontData->GetBrushData().GetBrush());
+        fontData->GetBrushData().GetBrush(),
+        D2D1_DRAW_TEXT_OPTIONS::D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT);
 }
 
 void wxD2DContext::EnsureInitialized()
diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm
index 93554f1c7..3e879b3c1 100644
--- a/src/osx/cocoa/dataview.mm
+++ b/src/osx/cocoa/dataview.mm
@@ -1573,6 +1573,7 @@ outlineView:(NSOutlineView*)outlineView
         [self setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
         [self setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];
         [self setTarget:self];
+        self.intercellSpacing = NSZeroSize;
     }
     return self;
 }
