diff --git a/reactos/dll/win32/gdi32/gdi32.def b/reactos/dll/win32/gdi32/gdi32.def
index 0d63e311df6..9a727414285 100644
--- a/reactos/dll/win32/gdi32/gdi32.def
+++ b/reactos/dll/win32/gdi32/gdi32.def
@@ -19,8 +19,8 @@ AddFontResourceTracking@8
AngleArc@24
AnimatePalette@16=NtGdiAnimatePalette@16
AnyLinkedFonts@0
-Arc@36=NtGdiArc@36
-ArcTo@36=NtGdiArcTo@36
+Arc@36
+ArcTo@36
BeginPath@4
BRUSHOBJ_hGetColorTransform@4
BRUSHOBJ_pvAllocRbrush@8
diff --git a/reactos/dll/win32/gdi32/gdi32.rbuild b/reactos/dll/win32/gdi32/gdi32.rbuild
index 643f4ea2fdf..ba4081065df 100644
--- a/reactos/dll/win32/gdi32/gdi32.rbuild
+++ b/reactos/dll/win32/gdi32/gdi32.rbuild
@@ -27,6 +27,7 @@
wingl.c
+ arc.c
bitmap.c
brush.c
dc.c
diff --git a/reactos/dll/win32/gdi32/misc/stubs.c b/reactos/dll/win32/gdi32/misc/stubs.c
index 4c9396a71ef..dcde0a1b162 100644
--- a/reactos/dll/win32/gdi32/misc/stubs.c
+++ b/reactos/dll/win32/gdi32/misc/stubs.c
@@ -35,29 +35,6 @@ CancelDC(
}
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-Chord(
- HDC a0,
- int a1,
- int a2,
- int a3,
- int a4,
- int a5,
- int a6,
- int a7,
- int a8
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-
/*
* @unimplemented
*/
diff --git a/reactos/dll/win32/gdi32/objects/arc.c b/reactos/dll/win32/gdi32/objects/arc.c
new file mode 100644
index 00000000000..149f216bb05
--- /dev/null
+++ b/reactos/dll/win32/gdi32/objects/arc.c
@@ -0,0 +1,79 @@
+#include "precomp.h"
+
+BOOL
+WINAPI
+Arc(
+ HDC hDC,
+ int nLeftRect,
+ int nTopRect,
+ int nRightRect,
+ int nBottomRect,
+ int nXStartArc,
+ int nYStartArc,
+ int nXEndArc,
+ int nYEndArc
+)
+{
+ return NtGdiArcInternal(GdiTypeArc,
+ hDC,
+ nLeftRect,
+ nTopRect,
+ nRightRect,
+ nBottomRect,
+ nXStartArc,
+ nYStartArc,
+ nXEndArc,
+ nYEndArc);
+}
+
+BOOL
+WINAPI
+ArcTo(
+ HDC hDC,
+ int nLeftRect,
+ int nTopRect,
+ int nRightRect,
+ int nBottomRect,
+ int nXRadial1,
+ int nYRadial1,
+ int nXRadial2,
+ int nYRadial2)
+{
+ return NtGdiArcInternal(GdiTypeArcTo,
+ hDC,
+ nLeftRect,
+ nTopRect,
+ nRightRect,
+ nBottomRect,
+ nXRadial1,
+ nYRadial1,
+ nXRadial2,
+ nYRadial2);
+}
+
+BOOL
+WINAPI
+Chord(
+ HDC hDC,
+ int nLeftRect,
+ int nTopRect,
+ int nRightRect,
+ int nBottomRect,
+ int nXRadial1,
+ int nYRadial1,
+ int nXRadial2,
+ int nYRadial2)
+{
+ return NtGdiArcInternal(GdiTypeChord,
+ hDC,
+ nLeftRect,
+ nTopRect,
+ nRightRect,
+ nBottomRect,
+ nXRadial1,
+ nYRadial1,
+ nXRadial2,
+ nYRadial2);
+}
+
+