diff --git a/desmume/src/windows/main.cpp b/desmume/src/windows/main.cpp
index f12f4fe9a..669eae9b3 100644
--- a/desmume/src/windows/main.cpp
+++ b/desmume/src/windows/main.cpp
@@ -3335,6 +3335,7 @@ int _main()
 	CommonSettings.GFX3D_Fog = GetPrivateProfileBool("3D", "EnableFog", 1, IniName);
 	CommonSettings.GFX3D_Texture = GetPrivateProfileBool("3D", "EnableTexture", 1, IniName);
 	CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName);
+	CommonSettings.GFX3D_Renderer_Multisample = GetPrivateProfileBool("3D", "EnableAntiAliasing", 0, IniName);
 	CommonSettings.GFX3D_TXTHack = GetPrivateProfileBool("3D", "EnableTXTHack", 0, IniName); //default is off.
 	Change3DCoreWithFallbackAndSave(cur3DCore);
 
@@ -6321,6 +6322,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
 			CheckDlgButton(hw,IDC_3DSETTINGS_FOG,CommonSettings.GFX3D_Fog);
 			CheckDlgButton(hw,IDC_3DSETTINGS_TEXTURE,CommonSettings.GFX3D_Texture);
 			CheckDlgButton(hw,IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack);
+			CheckDlgButton(hw,IDC_3DSETTINGS_ANTIALIASING, CommonSettings.GFX3D_Renderer_Multisample);
 			CheckDlgButton(hw,IDC_TXTHACK, CommonSettings.GFX3D_TXTHack);
 			SetDlgItemInt (hw,IDC_ZELDA_SHADOW_DEPTH_HACK,CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack,FALSE);
 			//CheckDlgButton(hw,IDC_ALTERNATEFLUSH,CommonSettings.gfx3d_flushMode);
@@ -6344,6 +6346,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
 					CommonSettings.GFX3D_Fog = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_FOG);
 					CommonSettings.GFX3D_Texture = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_TEXTURE);
 					CommonSettings.GFX3D_LineHack = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_LINEHACK);
+					CommonSettings.GFX3D_Renderer_Multisample = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_ANTIALIASING);
 					CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack  = GetDlgItemInt(hw,IDC_ZELDA_SHADOW_DEPTH_HACK,NULL,FALSE);
 					CommonSettings.GFX3D_TXTHack = IsDlgCheckboxChecked(hw,IDC_TXTHACK);
 
@@ -6354,6 +6357,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
 					WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName);
 					WritePrivateProfileInt ("3D", "ZeldaShadowDepthHack", CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack, IniName);
 					WritePrivateProfileInt ("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName);
+					WritePrivateProfileInt ("3D", "EnableAntiAliasing", CommonSettings.GFX3D_Renderer_Multisample, IniName);
 					WritePrivateProfileInt ("3D", "EnableTXTHack", CommonSettings.GFX3D_TXTHack, IniName);
 					//WritePrivateProfileInt("3D", "AlternateFlush", CommonSettings.gfx3d_flushMode, IniName);
 				}
diff --git a/desmume/src/windows/resource.h b/desmume/src/windows/resource.h
index c91d21a45..200a70da2 100644
--- a/desmume/src/windows/resource.h
+++ b/desmume/src/windows/resource.h
@@ -1056,6 +1056,8 @@
 #define IDC_AUTOLOADLUA                 64001
 #define IDC_TXTHACK                     64002
 #define ID_LABEL_TXTHACK1               64003
+#define IDC_3DSETTINGS_ANTIALIASING     64004
+#define IDC_3DSETTINGS_ANTIALIASING1    64005
 
 // Next default values for new objects
 // 
diff --git a/desmume/src/windows/resources.rc b/desmume/src/windows/resources.rc
index 722791fb0..ef45c4a19 100644
--- a/desmume/src/windows/resources.rc
+++ b/desmume/src/windows/resources.rc
@@ -112,14 +112,14 @@ BEGIN
     PUSHBUTTON      "&Cancel",IDCANCEL,127,94,50,16
 END
 
-IDD_3DSETTINGS DIALOGEX 0, 0, 190, 225
+IDD_3DSETTINGS DIALOGEX 0, 0, 190, 252
 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "3D settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,80,203,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,135,203,50,14
-    PUSHBUTTON      "Default",IDC_DEFAULT,8,203,50,14
+    DEFPUSHBUTTON   "OK",IDOK,83,234,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,137,234,50,14
+    PUSHBUTTON      "Default",IDC_DEFAULT,2,234,50,14
     GROUPBOX        "Renderer:",IDC_STATIC,7,7,174,39
     COMBOBOX        IDC_3DCORE,15,23,153,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR,
@@ -134,6 +134,9 @@ BEGIN
     CONTROL         "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,170,73,10
     LTEXT           "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,15,153,165,11
     CONTROL         "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,141,73,10
+    LTEXT           "Reduces jagged edges on 3D objects. Only works in OpenGL renderer.",IDC_3DSETTINGS_ANTIALIASING1,17,211,169,19
+    CONTROL         "Enable Anti-Aliasing",IDC_3DSETTINGS_ANTIALIASING,
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,201,78,10
 END
 
 IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198
@@ -1838,7 +1841,7 @@ BEGIN
 
     IDD_3DSETTINGS, DIALOG
     BEGIN
-        BOTTOMMARGIN, 217
+        BOTTOMMARGIN, 248
     END
 
     IDD_CHEAT_ADD, DIALOG